2012-04-29 60 views
8

我目前在我的excel文件中有2个工作表。如何让公式始终引用最后一张表格?

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

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

Apple 
Apple 
Apple 
Banana 
Banana 
Pear 

在第一片材,我将具有计数各自水果出现的时间的数,结果将显示在不同细胞的公式。

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

我想要做的是,有可能是我的公式进行编程,使得每次我添加原始数据的新工作表(3片),在第一层上的统计数据能够参考最新的表格来获取信息。

(假设数据的定位和都是一样的第二页​​。)

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

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

上面的公式是我希望我的公式工作,但可悲的是excel不允许我这样做。

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

+0

你能说出最后一张纸“实际”,并改名为“四五”当你创建一个新的实际表? – Aprillion 2012-04-29 10:36:37

+1

对不起。我不明白你的意思? – Thomas 2012-04-29 12:04:29

+0

没关系,我忘记了当你重命名工作表时,公式会自动使用新名字。 – Aprillion 2012-04-29 12:20:30

回答

6

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

10

您可以使用XLM /范围名称的办法解决这个,而不是VBA,如果你喜欢

  1. 定义一个区域名称,wshNames将板名称数组
    =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))
    Uses David Hager's technique
  2. 使用此Excel公式从工作表名称数组中提取最后一个工作表名称
    =INDEX(wshNames,COUNTA(wshNames)+RAND()*0)

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

如果确实使用VBA,则需要确保GETLASTWSNAME函数是不稳定的,即在发生更改时它会被更新。

enter image description here

+3

+1内容丰富! – 2012-05-01 19:46:39

相关问题