您可以在删除之前添加一些代码,这将删除您想要删除的带有工作表名称的表达式。
例如像“=Sheet1!B1+Sheet2!B1”这样的公式将是“=+Sheet1!B1”
Sub test()
Dim i As Integer
Dim deleteSheetName As String ' sheet name that you want to delete
Dim currentFormula As String
Dim currentFormulaArr() As String
deleteSheetName = "Sheet2"
currentFormula = Mid(Cells(1, 1).formula, 2, Len(Cells(1, 1).formula) - 1)
currentFormulaArr = Split(currentFormula, "+")
Cells(1, 1).formula = "="
For i = 0 To UBound(currentFormulaArr)
If Not currentFormulaArr(i) Like "*" & deleteSheetName & "*" Then
Cells(1, 1).formula = Cells(1, 1).formula & "+" & currentFormulaArr(i)
End If
Next i
End Sub
我只为一个细胞做。您需要在每张工作表中的所有使用过的单元格中进行一些循环。我希望,你明白我的想法。
我认为,chuff 的解决方案更好更快,但您可以在移除工作表之前应用他的解决方案。
... Range("<summary sheet name>").Replace What:="+IF(" & deleteSheetName & "*)", ....
对不起我可笑的英语。