代码之家  ›  专栏  ›  技术社区  ›  Matt

Excel VBA搜索文件中的所有公式并用单元格值替换文本的步骤

  •  2
  • Matt  · 技术社区  · 6 年前

    我在一个excel文件中有数百个公式。

    我想写一些 VBA 搜索所有公式并用在单元格中定义的值替换部分公式,替换为另一个单元格中的上一个值。

    例如Cell B4 包含:

    B4 = P5 2017
    

    以及 B5 包含:

    B5 = P6 2018
    

    我希望它使用该值对包含任何文本的所有公式执行替换,替换前一个值来自 B4级 例如:

    [FileA P5 2017.xlsm]
    

    替换为 B5型 以下内容:

    [FileA P6 2018.xlsm]
    

    文件的命名总是以 FileA .xlsm 是的。

    我有以下的 vba (有效)但它包含一个文本值:

    Sub FileNameUpdate()
        Cells.Replace What:="FileA P5 2018", Replacement:= _
            "FileA P6 2018", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
            :=False, SearchFormat:=False, ReplaceFormat:=False
    End Sub
    

    我需要它引用上述单元格,但无法获取 vba 为了工作,像这样:

    Sub FileNameUpdate()
        Cells.Replace What:="FileA $B$4", Replacement:= _
            "FileA $B$5", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
            :=False, SearchFormat:=False, ReplaceFormat:=False
    End Sub
    

    也尝试过:

    Sub FileNameUpdate()
        Cells.Replace What:="FileA " & B4 & ".xlsm", Replacement:= _
            "FileA " & B5 & ".xlsm", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
            :=False, SearchFormat:=False, ReplaceFormat:=False
    End Sub
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   user4039065user4039065    6 年前

    尝试,

    Sub FileNameUpdate()
        Cells.Replace What:=Range("B4") & ".xlsm", Replacement:=Range("B5") & ".xlsm", _
                      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
                      SearchFormat:=False, ReplaceFormat:=False
    End Sub
    
    推荐文章