エクセルの複数シートでのセル集計にINDIRECTを利用する。
シート間をまたがってcountifができないので
集計をするシートのあいているところに集計に必要な数値を入れる
集計をするセルは各シートの同一セル。
集計セルの行列地番を列番号:F4
同 行番号:F5~
集計セルがF5からF20まで続くため行番号をF5:F20まで
=(INDIRECT(ADDRESS($F5,$F$4,,,G$1))
いくつかのサイトで記載されていることをURLとその表記を掲載する。
下記のサイトによる
=INDIRECT(G1&"!E5")
では、値がとれなかった。この時シート名を各シートのA1セルに入力している名前を
シート名にしていた(マクロ使用)。このA1のセルに数字を入れると、
=INDIRECT(G1&"!E5")
で値を取ることができた。
には、集計作業をしているシートの空いている列などを作業領域にし、
INDIRECT()を使って一旦各表の該当セルへの参照を集めておけば、お望みのCOUNTIFが可能です。
例えば10枚あるシートのA3セルを集計したいとします。
ここでは作業領域をHとIにしてみます。
H1~H10にシート名を入れておき、Iには =INDIRECT(H1&"!A3")として、オートフィルでI1~I10「=INDIRECT(H10&"!A3")」までを埋めます。
これで、I列に各シートのA3の参照がならびましたので、同じシートの任意のセルで=COUNTIF(I1:I10,"○")を掛けてみてください。
INDIRECT関数は、引数に指定されたセルに入力されているデータを使ってセルを参照してくれる関数です。
A2セルに
「4月」と入力されているときに
「=INDIRECT(A2&"!B33")」は
「='4月'!B33」と同じ意味になります。
上記の数式でINDIRECT関数の引数のうち「A2」はセルの相対参照ですから、下方向にオートフィルすれば
「=INDIRECT(A3&"!B33")」
「=INDIRECT(A4&"!B33")」
と変化しA3・A4セルにシート名を入力しておけば、それぞれのシートのB33セルの値を表示するようになります。
セルA1に入力されたシート名の、セルB3を参照する場合
=INDIRECT(A1& "!B3")
また上記ではセルB3が固定になってますが、
セルA1 に参照したい【シート名】をいれ
セルA2 に参照したい【セル番地】まで入れておくと
なお、使い勝手がよくなるかも知れませんね。
=INDIRECT(A1& "!" & A2)
使用する関数:ADDRESS と INDIRECT
例:
Sheet1のA1にSheet2という文字列が入っているとします。
Sheet2のA2に「参照する値」とい文字列が入っているとします。
式:
=INDIRECT(ADDRESS(2,1,,,A1))
これで、=Sheet2!A2 と同じ結果になります。
解説:
=ADDRESS(2,1,,,A1) のみですと、Sheet2!$A$2という文字列になります。その後、INDIRECTを使うことにより、値を取得します。
エクセルの複数シートでのセル集計にINDIRECTを利用(countifができない)
シート間をまたがってcountifができないので集計をするシートのあいているところに集計に必要な数値を入れるシート名:セルG1:K1集計をするセルは各シートの同一セル。集計セルの行列地番を列番号:F4同 行番号:F5~集計セルがF5からF20まで続くため行番号をF5:F20まで(INDIRECT(ADDRESS($F5,$F$4,,,G$1))
いくつかのサイトで記載されていることをURLとその表記を掲載する。下記のサイトによる=INDIRECT(G1&"!E5")では、値がとれなかった。この時シート名を各シートのA1セルに入力している名前をシート名にしていた(マクロ使用)。このA1のセルに数字を入れると、=INDIRECT(G1&"!E5")で値を取ることができた。
http://q.hatena.ne.jp/1147068497
には、集計作業をしているシートの空いている列などを作業領域にし、INDIRECT()を使って一旦各表の該当セルへの参照を集めておけば、お望みのCOUNTIFが可能です。例えば10枚あるシートのA3セルを集計したいとします。ここでは作業領域をHとIにしてみます。H1~H10にシート名を入れておき、Iには =INDIRECT(H1&"!A3")として、オートフィルでI1~I10「=INDIRECT(H10&"!A3")」までを埋めます。これで、I列に各シートのA3の参照がならびましたので、同じシートの任意のセルで=COUNTIF(I1:I10,"○")を掛けてみてください。
http://www.relief.jp/itnote/archives/001697.php
にはINDIRECT関数は、引数に指定されたセルに入力されているデータを使ってセルを参照してくれる関数です。A2セルに「4月」と入力されているときに「=INDIRECT(A2&"!B33")」は「='4月'!B33」と同じ意味になります。上記の数式でINDIRECT関数の引数のうち「A2」はセルの相対参照ですから、下方向にオートフィルすれば「=INDIRECT(A3&"!B33")」「=INDIRECT(A4&"!B33")」と変化しA3・A4セルにシート名を入力しておけば、それぞれのシートのB33セルの値を表示するようになります。
http://oshiete.goo.ne.jp/qa/3547667.html
セルA1に入力されたシート名の、セルB3を参照する場合 =INDIRECT(A1& "!B3")また上記ではセルB3が固定になってますが、セルA1 に参照したい【シート名】をいれセルA2 に参照したい【セル番地】まで入れておくとなお、使い勝手がよくなるかも知れませんね。 =INDIRECT(A1& "!" & A2)
http://q.hatena.ne.jp/1166863251使用する関数:ADDRESS と INDIRECT
例: Sheet1のA1にSheet2という文字列が入っているとします。 Sheet2のA2に「参照する値」とい文字列が入っているとします。式: =INDIRECT(ADDRESS(2,1,,,A1)) これで、=Sheet2!A2 と同じ結果になります。解説: =ADDRESS(2,1,,,A1) のみですと、Sheet2!$A$2という文字列になります。その後、INDIRECTを使うことにより、値を取得します。