excel - formula變數 - 我如何讓我的公式總是參考最後一張?




vba formula變數 (2)

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

第一個工作表稱為“摘要”頁面,顯示第二個工作表的摘要結果。

第二張紙被稱為原始數據。 一個例子是一個名為水果的列。

Apple
Apple
Apple
Banana
Banana
Pear

在第一張紙上,我會有一個公式來計算各個果實出現的時間,結果將顯示在不同的單元格中。

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

我想要做的是,是否可以對公式進行編程,以便每次添加一張新的原始數據(第三張)時,第一張紙上的統計數據就可以引用最新的紙張來獲取信息。

(假定數據的定位和全部與第二張相同)

到目前為止,我所做的是提供一個函數GETLASTWSNAME() ,它能夠始終檢索最後一個工作表的名稱。 但對於我來說,將函數嵌入到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函數是不穩定的,也就是說,當更改發生時它會被更新。