excel根据多less列调整公式

我在Excel VBA上有一个工作macros。 在其中一个单元格中,我有一个公式可以find该列的总数。 但是,一旦我运行macros,它删除所有空白/空白列,所以我需要找出一个代码,我可以把macros可以重新安排公式的基础上我有多less列?

Sub CommandButton1_Click() ActiveSheet.Unprotect Password:="OperationHUMP" ActiveSheet.Select If (Range("C3") = "Change") Then MsgBox "Client Cost (excluding VAT) cannot exceed total budget for the campaign. Please check and insert correct prices.", vbOK, "Client Cost too High" Exit Sub End If With ActiveSheet.Range("B18:B74") .Value = .Value .SpecialCells(xlCellTypeBlanks).EntireRow.Delete Dim cel As Range For Each cel In ActiveSheet.SpecialCells(xlCellTypeFormulas) cel.Formula = Replace(cel.Formula, "#REF!", "") Next Application.DisplayAlerts = False End With Dim SaveName As String SaveName = ActiveSheet.Range("C5").Text ActiveSheet.Protect Password:="OperationHUMP" With ActiveWorkbook Dim sht As Object For Each sht In Sheets If sht.Name <> "Media Plan" Then sht.Visible = xlSheetHidden End If Next sht ActiveSheet.Protect Password:="OperationHUMP" .Worksheets("Media Plan").CommandButton2.Visible = False .Worksheets("Media Plan").CommandButton1.Visible = False .SaveAs "S\" & SaveName & ".xls" End With Workbooks.Open ("S\" & SaveName & ".xls") Workbooks("Media Plan Template Most Recent in Access.xlsb").Close False End Sub 

有什么build议么?

提前致谢!

删除操作后,您可以尝试修复公式。 像这样的事情应该做的

 Dim cel as Range For Each cel In Activesheet.UsedRange.SpecialCells(xlCellTypeFormulas) cel.Formula = Replace(cel.Formula, "#REF!", "") Next 

您可能需要多次执行replace,因为您可能会删除多行(或列),因此可能会导致出现多次$REF! 在同一个公式中。 如果这是必要的告诉我。

ps:最初问题只出现在包含多区域范围的公式中,即=SUM(E:G,P:Q,S:S) ,然后代码完全删除其中一个区域,例如列S两者在上面的例子中列P和Q。 发生这种情况时,区域的地址在公式中由#REFreplace。 除此之外,Excel会自动调整那些未被完全删除的区域的公式。