如何让我的公式始终参考最后一张?

Tho*_*mas 8 excel vba excel-vba excel-formula

我目前在excel文件中有2个工作表.

第一个工作表称为"摘要"页面,它显示第二个工作表的摘要结果.

第二张表称为原始数据.一个例子是名为Fruits的列.

Apple
Apple
Apple
Banana
Banana
Pear
Run Code Online (Sandbox Code Playgroud)

在第一张表中,我将有一个公式,计算相应水果出现的时间,结果将显示在不同的单元格中.

=COUNTIF(Fruits!A2:A7,"Apple")
=COUNTIF(Fruits!A2:A7,"Banana")
Run Code Online (Sandbox Code Playgroud)

我想做的是,我是否可以对公式进行编程,以便每次添加新的原始数据表(第3张)时,第一张表上的统计数据都可以引用最新的表格来获取信息.

(假设数据的定位和所有都与第二张相同.)

到目前为止我所做的是提出一个GETLASTWSNAME()能够始终检索最后一个工作表名称的函数.但是我似乎不可能在countif公式本身中嵌入函数.

=COUNTIF((GETLASTWSNAME())!A2:A7,"Apple)
Run Code Online (Sandbox Code Playgroud)

上面的公式是我希望我的公式如何工作,但遗憾的是excel不允许我这样做.

任何意见将不胜感激.谢谢!

bre*_*tdj 10

如果您愿意,可以使用XLM/Range Name解决方法而不是VBA

  1. 定义范围名称,wshNames以保存工作表名称数组
    =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
    使用David Hager的技术
  2. 使用此Excel公式从工作表名称数组中提取最后一个工作表名称
    =INDEX(wshNames,COUNTA(wshNames)+RAND()*0)

该公式表示查看所有工作表,然后返回最后一个(使用COUNTA).该RAND()*0)部分确保公式是易变的并在Excel执行时更新

如果使用VBA,则需要确保GETLASTWSNAME函数是易失性的,即在发生更改时会更新.

在此输入图像描述


Tom*_*lak 6

=COUNTIF(INDIRECT(GETLASTWSNAME() & "!A2:A7"),"Apple")