Excel VBA搜索文件中的所有公式,并将文本替换为单元格值

时间:2018-07-06 12:17:43

标签: excel vba excel-vba

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

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

例如,单元格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 个答案:

答案 0 :(得分:2)

尝试

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