Excel #删除其中一张图纸时出现Ref错误

Excel #删除其中一张图纸时出现Ref错误,excel,excel-formula,excel-2010,vba,Excel,Excel Formula,Excel 2010,Vba,我有一张从1到50页的表格,还有一张汇总表,上面有基于1到50页的公式(很长的公式!)。但是,每当我运行宏时,宏将删除50张工作表中的一张,并且汇总表中的所有公式都将变为#Ref 我知道我可以使用间接函数,但是我有很长的公式,一个单元格中的公式实际上指的是所有50页。这将花费大量的时间将间接功能一一引用到所有50页 例如:其中一个单元格中的公式为: if(sheet1!A1=2,1,0)+if(sheet2!A1 = 2,1,0)+...+if(sheet50!A1=2,1,0) 我必须沿着列

我有一张从1到50页的表格,还有一张汇总表,上面有基于1到50页的公式(很长的公式!)。但是,每当我运行宏时,宏将删除50张工作表中的一张,并且汇总表中的所有公式都将变为#Ref

我知道我可以使用间接函数,但是我有很长的公式,一个单元格中的公式实际上指的是所有50页。这将花费大量的时间将间接功能一一引用到所有50页

例如:其中一个单元格中的公式为:

if(sheet1!A1=2,1,0)+if(sheet2!A1 = 2,1,0)+...+if(sheet50!A1=2,1,0)
我必须沿着列和横行拖拽这个公式


有没有办法快速完成这项工作并消除#Ref错误?我不介意在宏或基于公式中这样做。请帮忙。谢谢

删除工作表操作后,向宏中添加以下内容。如果引用正确,它将替换汇总表中#REF公式的所有实例。您可能需要创造性地定制
WHAT:=
子句,使其与公式的#REF子句相匹配

   Range("<summary sheet name>").Replace What:="+IF(#REF!*)", Replacement:="", LookAt:=xlPart, _
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
Range(“”)。替换内容:=“+IF(#REF!*)”,替换:=”,查看:=xlPart_
SearchOrder:=xlByRows,MatchCase:=False,SearchFormat:=False_
ReplaceFormat:=False

PS:一定要先在你的工作表上测试一下

您可以在删除之前添加一些代码,这些代码将删除要删除的带有工作表名称的表达式

例如,像“=Sheet1!B1+Sheet2!B1”这样的公式将是“=+Sheet1!B1”

我只做了一个细胞。您需要在每张工作表中的所有使用的单元格中进行一些循环。 我希望你能理解我的想法

我认为,chuff的解决方案更好更快,但您可以在移除板材之前应用他的解决方案

... Range("<summary sheet name>").Replace What:="+IF(" & deleteSheetName & "*)", ....
。。。范围(“”)。替换内容:=“+如果(“&deleteSheetName&“*)”。。。。

对不起,我的英语太可笑了

你只是想摆脱
#Ref并且仍然使用宏?您可以复制汇总表中的所有单元格并将其粘贴为值(粘贴特殊>粘贴值)以删除公式。检查此选项,您可以在删除汇总表之前向宏添加逻辑以修改汇总表中的公式,然后将修改后的公式放回汇总表中;您可以尝试搜索并替换搜索中的#REF值-我无法手动执行此操作,但要了解如何以编程方式执行此操作的一些想法(我也会尝试找出我自己满意的方法)。删除第50张图纸后,是否有新的图纸将替换丢失的一张,或者您需要保留49张图纸?
... Range("<summary sheet name>").Replace What:="+IF(" & deleteSheetName & "*)", ....