我目前的问题是,如果我在工作簿中复制工作表,则复制的表会丢失引用。
这是我用来复制工作表的代码:
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Sheets("Template")
Dim wa As Worksheet: Set wa = wb.Sheets("NeedToKnow")
Dim newws As Worksheet, sh As Worksheet, newname
'some other code to create the name
ws.Copy after:=wa: Set newws = ActiveSheet: newws.Name = newname
上面的代码复制工作表“模板”并使用相应的“新名称”重命名。
模板有一个包含多个列的表。此列具有包含的数组公式:
=IF(ISERROR(INDEX(Table1[[Costobject]:[Total]];SMALL(IF($B$3=Table1[Costobject];ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1));ROW('Planning'!BI9)-8);COLUMN('Planning'!BI9)));0;INDEX(Table1[[Costobject]:[Total]];SMALL(IF($B$3=Table1[Costobject];ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1));ROW('Planning'!BI9)-8);COLUMN('Planning'!BI9)))
所以在vba运行并复制了工作表之后,上面的公式就像这样被破坏了:
=IF(ISERROR(INDEX(Table1[[Costobject]:[Total]];SMALL(IF($B$3=Table1[Costobject];ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1));ROW('Planning'!#REF!)-8);COLUMN('Planning'!#REF!)));0;INDEX(Table1[[Costobject]:[Total]];SMALL(IF($B$3=Table1[Costobject];ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1));ROW('Planning'!#REF!)-8);COLUMN('Resto Planning'!#REF!)))
反正有没有阻止这种情况发生?或者是否有自动解决方法。
目前,当我点击论坛中的CTRL-SHIFT-ENTER以计算数组然后使用AutocorrectOptions时,我手动修复了这些工作表。
答案 0 :(得分:1)
使用ROW(11:11); COLUMN(B:B)
。使用ROW或
COLUMN函数只是将一个序数返回到公式中。 ROW(A19)-8
,ROW(19:19)-8
,ROW('Planning'!BI9)-8
和ROW(11:11)
都是一样的;他们只是导致 11 。
=IFERROR(INDEX(Table1[[Costobject]:[Total]];
SMALL(IF($B$3=Table1[Costobject]; ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1)); ROW(11:11)); COLUMN(B:B))); 0)
IFERROR function有效地将你的公式削减了一半,前提是你使用的是.xlsx,而不是.xls。
答案 1 :(得分:0)
@Jeeped Great Input。这简化了我的配方。我现在按照建议更改了它:
=IFERROR(INDEX(Table1[[Costobject]:[Total]];SMALL(IF($B$3=Table1[Costobject];ROW(Table1[Costobject])-MIN(ROW(Table1[ProjectName])-1));ROW('Planning'!1:1));COLUMN('Planning'!BI:BI));0)
实际上它不是B19
BI
但是你的建议帮助我找到了正确的方向。
所以现在我仍然有一个问题,当我复制参考文献被破坏的标签时,请参见下图: Copied Sheet with broken References
问题是我如何解决此复制错误?
答案 2 :(得分:0)
对于模板表的复制问题,我找到了解决方案。
当我在表格中使用公式时,我将表格转换为范围
我做了以下步骤:
之后我没有任何关于参考文献被破坏的问题。