首页 > 解决方案 > 使用公式操作外部工作簿的最后一张表

问题描述

有2个工作簿如下:

A.xlsx 和 B.xlsx

考虑在 A.xlsx 的 $A$1 单元格中创建一个公式来引用 B.xlsx 最后一张表的单元格 $A$1,如下所示。

='[B.xlsx]lastsheet'!A1

可以通过给 B.xlsx 的最后一张表命名为“lastsheet”来完成,但是在定期添加新表时它并不灵活。

除了VBA还有什么解决方案?

标签: excelexcel-formula

解决方案


这是一种方法

为了这个工作

  1. 文件 B 必须.xlsm像我们使用 Excel 4 函数一样保存GET.WORKBOOK(1)
  2. 文件 B 必须打开,因为我们正在使用INDIRECT

工作簿 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,它在 cell 中的值为“1111” A1

在此处输入图像描述

我们将尝试在A.xlsx使用中获取此值Indirect

工作簿 A

将此公式插入到任何单元格中A.xlsx

=INDIRECT("[B.xlsm]"&[B.xlsm]Sheet1!$A$1&"!A1")

你会得到1111。请注意,我们没有在Sheet4任何地方使用最后一张纸的名称。[B.xlsm]Sheet1!$A$1部分获取Sheet4,然后获取Indirectfrom 的A1Sheet4

在此处输入图像描述

推荐

说了/做了以上所有事情后,我建议使用 VBA,因为那样会更简单。


推荐阅读