8

現在、Excel ファイルに 2 つのワークシートがあります。

最初のシートは概要ページと呼ばれ、2 番目のシートの概要結果が表示されます。

2 番目のシートは生データと呼ばれます。例として、Fruits という名前の列があります。

Apple
Apple
Apple
Banana
Banana
Pear

最初のシートには、それぞれの果物が出現する回数をカウントする式があり、結果が異なるセルに表示されます。

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

私がやりたいことは、生データの新しいシート(3番目のシート)を追加するたびに、最初のシートの統計が最新のシートを参照して情報を取得できるように式をプログラムすることは可能ですか.

(データの配置等は2枚目と同じとします。)

GETLASTWSNAME()これまでに行ったことは、常に最後のワークシートの名前を取得できる関数を作成することです。しかし、countif 式自体の中で関数をネストすることはちょっと不可能に思えます。

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

上記の式は、私の式が機能する方法ですが、残念ながらExcelではそれができません。

コメントをいただければ幸いです。ありがとう!

4

3 に答える 3

10

必要に応じて、VBA ではなく、XLM/範囲名の回避策を使用できます。

  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。つまり、変更が発生すると更新されます。

ここに画像の説明を入力

于 2012-04-30T04:28:32.333 に答える
6

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

于 2012-04-29T09:30:30.873 に答える