在 POI 中,如何在不更改对它的引用的情况下重命名 sheet?
In POI, how to rename a sheet without changing references to it?
我有 SheetA,SheetX 有公式引用。
现在我想用类似的 SheetB 替换 SheetA(但有额外的行)。
为此,我将 SheetA 重命名为 OldSheetA,然后将 SheetB 重命名为 SheetA。
这不起作用,因为 SheetX 上的公式引用现在指向 OldSheetA 而不是 SheetA:
='SheetA'!G5 --becomes--> ='OldSheetA'!G5
我怎样才能保持指向 SheetA 的引用?
保持引用指向 SheetA 的唯一方法是避免重命名它。
我猜你唯一的选择是:
- 在所有重命名完成后重新指向 SheetX 中的引用。
-或者-
- 要将数据从 SheetA 复制到新的 sheet,然后在 SheetA 上创建 SheetB 的数据
我没有找到使用 POI 的解决方案,但这个简单的公式修复可以解决问题。在公式中使用 INDIRECT() 函数来引用 SheetA,这样它们就不会受到 sheet 重命名的影响。
而不是这样的公式:
=SheetA!B2
改为:
=INDIRECT("SheetA!B2")
我有 SheetA,SheetX 有公式引用。 现在我想用类似的 SheetB 替换 SheetA(但有额外的行)。 为此,我将 SheetA 重命名为 OldSheetA,然后将 SheetB 重命名为 SheetA。
这不起作用,因为 SheetX 上的公式引用现在指向 OldSheetA 而不是 SheetA:
='SheetA'!G5 --becomes--> ='OldSheetA'!G5
我怎样才能保持指向 SheetA 的引用?
保持引用指向 SheetA 的唯一方法是避免重命名它。
我猜你唯一的选择是:
- 在所有重命名完成后重新指向 SheetX 中的引用。
-或者- - 要将数据从 SheetA 复制到新的 sheet,然后在 SheetA 上创建 SheetB 的数据
我没有找到使用 POI 的解决方案,但这个简单的公式修复可以解决问题。在公式中使用 INDIRECT() 函数来引用 SheetA,这样它们就不会受到 sheet 重命名的影响。
而不是这样的公式:
=SheetA!B2
改为:
=INDIRECT("SheetA!B2")