Excel 尝试查找并替换最后一行数据中的公式

Excel 尝试查找并替换最后一行数据中的公式,excel,vba,Excel,Vba,我需要复制最后一行数据,用公式将其复制到下一行,然后对新的最后一行执行查找和替换-我让它向下复制该行,但查找和替换不起作用-有什么提示吗?谢谢 Sub CopyLastRowandReplace() Dim sourceSheet As Worksheet Dim sourceRange As Range Dim LastRow As Long Dim ReplaceRow As Range Set sourceSheet = ThisWorkbook.Worksheets("Bo

我需要复制最后一行数据,用公式将其复制到下一行,然后对新的最后一行执行查找和替换-我让它向下复制该行,但查找和替换不起作用-有什么提示吗?谢谢

Sub CopyLastRowandReplace()

Dim sourceSheet As Worksheet
Dim sourceRange As Range
Dim LastRow As Long
Dim ReplaceRow As Range

Set sourceSheet = ThisWorkbook.Worksheets("Book 1")
    
LastRow = sourceSheet.Range("B" & sourceSheet.Rows.Count).End(xlUp).Row
    
Set sourceRange = sourceSheet.Range("B" & LastRow & ":N" & LastRow)
    
sourceRange.Offset(1).Formula = sourceRange.Formula

Set ReplaceRow = sourceSheet.Range("B" & LastRow & ":N" & LastRow)

Range("B" & LastRow & ":N" & LastRow).Select
        Selection.Replace What:="Aug", Replacement:="Sep", LookAt:=xlFormulas, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False

End Sub
核心问题

  • LookAt:=xlFormulas
    。应该是
    xlPart
    xlother
  • 您没有替换新的最后一行(您没有更新最后一行)
  • 也就是说,还有其他改进的机会

    子演示()
    复制最后一行并替换此工作簿。工作表(“第1册”)、2、13、“8月”、“9月”
    端接头
    子CopyLastRowandReplace(源表作为工作表,StartColumn作为长,NumColumns作为长,FindValue作为变量,ReplaceValue作为变量)
    将源范围变暗为范围
    设置sourceRange=sourceSheet.Cells(sourceSheet.Rows.Count,StartColumn)。结束(xlUp)。调整大小(1,NumColumns)
    使用sourceRange
    .Offset(1,0)。公式=.Formula
    .偏移量(1,0)。替换_
    What:=FindValue_
    替换:=替换值_
    看:=xlPart_
    搜索顺序:=xlByRows_
    MatchCase:=真_
    SearchFormat:=False_
    ReplaceFormat:=False
    以
    端接头
    
    ReplaceRow.Replace What:=“Aug”…
    已经尝试过了-不断出现“下标超出范围”错误。谢谢你的回复。什么电话?该行不应抛出下标超出范围的错误。如果有的话,
    Set sourceSheet=thiswook.Worksheets(“第1册”)
    会。不知道这就是问题的原因-它很好地复制了我需要的行,只是F&R没有被拾取,即使我已经准确地定义了范围-它只是数据集上新的最后一行参数
    LookAt
    通常有
    xlother
    (1)和
    xlPart
    (2)之类的参数,而
    Find方法的
    LookIn
    参数有
    xlFormulas
    xlValues
    xlComments
    等参数,它们与1或2完全不同。是的,这非常有效-谢谢。我能问一下为什么这比我的代码更好/更好吗?我总是想知道为什么我的代码不好,哈哈。谢谢。1)避免选择2)避免在范围定义中生成字符串3)将范围定义集中到一行,使以后在需要时更新更安全。你也可以泛化查找和替换值,使其更易于重用。你是什么意思泛化-b/c我将不得不对40多张其他表格执行上述相同的过程你是说把它定义为一个变量/字符串并用它设置F&R吗?我已经将代码更新为一个参数化版本,你可以根据需要调用不同的值