SUM 'between:sheets' 式で Excel シート名を取得する

SUM 'between:sheets' 式で Excel シート名を取得する

さまざまな名前のシートのシリーズがあります。

start, wc 17 Oct,  wc 24 Oct, wc 31 Oct

各シートのさまざまな数字の合計を維持するために、各シートで次のものを使用しています。

=SUM('start:wc 24 Oct'!B1)

次のシートは、

=SUM('start:wc 31 Oct'!B1)

などなど。現在のシート名を取得するには、=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)

しかし、この2つを組み合わせる方法はあるのでしょうか

=SUM("'start:"&MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&'!B1)

可能であれば、上記を機能させるための正しい構文は何ですか?

私は使ってみましたINDIRECT

=SUM(INDIRECT("'start:"&MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&"'!B1", TRUE))

しかし、これではエラーが発生し続けます#REF!

答え1

1 つの方法は、すべてのシートのリストをstartシートに追加することです。

これは、名前付き範囲を追加することで動的に実行できます。名前マネージャーで次の数式を使用します。

=GET.WORKBOOK(1)

そして何か名前を付けます(私は を使用しましたtest

ここに画像の説明を入力してください

次に、Start!A1 に以下を入力します。

=IFERROR(MID(INDEX(test,ROW(1:1)),FIND("]",INDEX(test,ROW(1:1)))+1,999),"")

下にドラッグ/コピーします。これにより、タブに表示される順序でシートのリストが作成されます。

次に、目的のセルに次の数式を使用して合計を計算します。

=SUMPRODUCT(SUMIF(INDIRECT("'" & INDEX('start'!A:A,MATCH("start",'start'!A:A,0)):INDEX('start'!A:A,MATCH(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),'start'!A:A,0)) & "'!B1"),"<>0"))

関連情報