是否有任何解决方法来替换工作表中的许多单元格中的公式

时间:2018-03-29 15:23:56

标签: excel excel-vba replace excel-formula excel-2013 vba

我有一张excel表,里面有1,373,760个使用过的单元格,每个单元格里面都有一个独特的公式。但每个单元格都指的是需要更改的文件路径。搜索和替换花费了大量时间,并且经常在某些地方失败。有没有一种有效的方法来替换这些细胞?

示例公式:' \ root \ folder \ subfolder \ another_folder [workbook_name] worksheet_name' cellNumber

工作簿,工作表,单元格编号是唯一的。只有路径是不变的。

我尝试通过存储路径和工作表名称来引用其他单元格,但它没有那样工作: Reference another workbook with dynamic worksheet name

所有这些细胞都使用VBA填充,大约需要15个小时。因此,任何有效的创建新工作簿的方法也是值得赞赏的。

提前致谢!!

2 个答案:

答案 0 :(得分:2)

这样的事情,取决于你究竟在寻找什么:

Public Sub TestMe()

    Dim myCell  As Range

    For Each myCell In ActiveSheet.UsedRange
        If myCell.HasFormula Then
            If InStr(1, myCell, "\root\folder\subfolder\another_folder") Then
                myCell.Formula = "=root\folder\subfolder\another_folder" + something
            End If
        End If
    Next myCell

End Sub
  • 这里关闭自动计算是一个好主意。
  • 代码绕过UsedRange的{​​{1}}中的每个单元格,如果它是公式,它会检查它是否包含ActiveSheet
  • 如果是这种情况,则会生成新公式。

答案 1 :(得分:1)

从我的拙见中搜索和替换是您最快的解决方案,通过VBA或手动禁用计算。替换完成后启用自动计算。

启用和禁用自动计算的VBA代码:

Sub Disbale_Automatic_Calc()
Application.Calculation = xlCalculationManual
End Sub

Sub Enable_Automatic_Calc()
Application.Calculation = xlCalculationAutomatic
End Sub