有2个工作簿,如下所示:
A.xlsx和B.xlsx
考虑在A.xlsx的单元格$ A $ 1中创建一个公式以引用B.xlsx的最后一页的单元格$ A $ 1,如下所示。
='[B.xlsx]lastsheet'!A1
可以通过为B.xlsx的最后一个工作表命名为“ lastsheet”来完成,但是当定期添加新工作表时,它不灵活。
除了VBA,还有其他解决方案吗?
答案 0 :(得分:0)
这是一种方法
为此工作
.xlsm
一样,文件B必须另存为GET.WORKBOOK(1)
INDIRECT
时必须打开文件B 工作簿B设置
打开Formula | Name Manager
并创建一个新的定义名称。说 GetLastSheetName ,然后在Refers To
=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
接下来,在您选择的任意工作表中,输入公式
=INDEX(GetLastSheetName,COUNTA(GetLastSheetName)+RAND()*0)
您将看到最后一张纸的名称出现在此单元格中。为了说明起见,假设您在A1
Sheet1
中输入了上述公式
最后一件事。假设您在B.xlsm中的最后一个工作表是Sheet4,它在单元格A1
中的值为“ 1111”。
我们将尝试使用A.xlsx
在Indirect
中获得该值
工作簿A
将此公式插入A.xlsx
的任何单元格中
=INDIRECT("[B.xlsm]"&[B.xlsm]Sheet1!$A$1&"!A1")
,您将得到1111
。注意,我们在任何地方都没有使用最后一张工作表Sheet4
的名称。 [B.xlsm]Sheet1!$A$1
部分获得Sheet4
,然后Indirect
从A1
获得Sheet4
的值
推荐
上面已经说了/做完了,我建议您使用VBA,因为那样会更简单。