仮定:
1) 各タブのデータは、A 列から B 列の 2 行目から始まり、製品は A 列に表示されます。
2) これらのタブのいずれにおいても、データが 1000 行を超えることはありません (この値の数式 (および名前付き範囲) 内のすべての出現箇所を適切に大きな数に変更します)。
3)どのタブのデータの間にも空白のセルはありません
4) Excel 2007 以降を使用している
次に、まず、関連するすべてのシート名 (サマリー シートを除く) をサマリー シートの水平方向の範囲 (D1:F1 など) にリストし、タブに表示されるとおりに正確にリストするようにします。
次に、Name Manager に移動して、2 つの新しい名前を定義します。
名前: Arry1
参照: =MMULT(TRANSPOSE(COUNTIFS(INDIRECT("'"&$D$1:$F$1&"'!A2:A1000"),A$2:A2,INDIRECT("'"&$D$1:$F)) $1&"'!A2:A1000"),"<>")),ROW(INDIRECT("1:"&COUNTA(A$2:A2)))^0)
名前: Arry2
参照: =SUBTOTAL(3,INDIRECT("'"&$D$1:$F$1&"'!A2:A1000"))
(これらを作成するときは、こことまったく同じように表示されることを確認してください。貼り付けると、数式が引用符で囲まれてしまうことがありますが、これは正しくありません。)
概要シートのセル A2 に次のように入力します。
=シート1!A2
(または、最初のシートの名前は何でも。)
次に、概要シートの A3 に、この配列数式** :
=IFERROR(INDEX(INDIRECT("'"&INDEX($D$1:$F$1,MATCH(FALSE,Arry1=TRANSPOSE(Arry2),0))&"'!A2:A1000"),MATCH(0,COUNTIF( A$2:A2,INDIRECT("'"&INDEX($D$1:$F$1,MATCH(FALSE,Arry1=TRANSPOSE(Arry2),0))&"'!A2:A1000")),0))," ")
空白ができ始めるまで下にコピーします。
B2 (非配列):
=IF(A2="","",SUMPRODUCT(SUMIF(INDIRECT("'"&$D$1:$F$1&"'!A:A"),A2,INDIRECT("'"&$D$1: $F$1&"'!B:B"))))
繰り返しますが、空白ができ始めるまで下にコピーします。
よろしく
**配列数式は、「標準」数式と同じ方法では入力されません。Enter キーだけを押す代わりに、最初に CTRL と SHIFT を押したままにしてから Enter キーを押します。正しく行った場合は、Excel によって数式が中かっこ {} で囲まれていることがわかります (ただし、これらを自分で手動で挿入しようとしないでください)。