我如何让我的公式总是参考最后一张?

我目前在我的Excel文件中有2个工作表。

第一个工作表称为“摘要”页面,显示第二个工作表的摘要结果。

第二张纸被称为原始数据。 一个例子是一个名为水果的列。

Apple Apple Apple Banana Banana Pear 

在第一张纸上,我会有一个公式来计算各个果实出现的时间,结果将显示在不同的单元格中。

 =COUNTIF(Fruits!A2:A7,"Apple") =COUNTIF(Fruits!A2:A7,"Banana") 

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

(假定数据的定位和全部与第二张相同)

到目前为止,我所做的是提供一个函数GETLASTWSNAME() ,它能够始终检索最后一个工作表的名称。 但对于我来说,将函数embedded到countif公式本身似乎是不可能的。

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

上面的公式是我想要我的公式工作,但可悲的是,Excel不允许我这样做。

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

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

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

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

这个公式说,看所有的表,然后返回最后(使用COUNTA)。 RAND()*0)部分确保公式是易失性的,并在Excel中更新

如果你使用VBA,你将需要确保你的GETLASTWSNAME函数是不稳定的,也就是说,当更改发生时它会被更新。

在这里输入图像说明