いまさら聞けないExcelの使い方講座
【Excel】VBAは不要! 一瞬で複数のシート上ある表を1つに結合する簡単な方法
2025年1月8日 06:55
複数の表を一瞬で結合! 別シートにある表もOK
複数の表を結合したいことがありませんか? 例えば、集計作業のために複数シートにある表をまとめるといった作業です。コピー&ペーストをくり返すのは面倒ですよね。シートによって行数が異なると、さらに手間がかかります。
複数シートにある数値を一気に合計する場合は、「3D集計」や「串刺し集計」と呼ばれるSUM関数を使ったテクニックもありますが、並べ替えや小計行などの追加を想定していると使えません。
今回紹介する「VSTACK関数」を利用すれば一瞬です。同一シートにある表を結合するだけでなく、複数シートにある表も結合可能です。本稿執筆時点で、Microsoft 365のExcelのみに限定されますが、結合したい表(セル範囲)を「,」で区切って指定するだけの手軽さです。さっそく使ってみましょう。
同一シートにある表を結合する
同じワークシートにある表を結合して、VSTACK関数の動作を確認してみましょう。見出し行はあらかじめ用意しておきます。結果はスピルで表示されるので、入力する数式は1つのみです。
複数シートにある表を結合する
ここから本題です。VSTACK関数を使って複数シートにある表を1つにまとめてみます。ここでは[秋葉原店][新宿店][中野店][EC]という4つのシートがあり、結合した表を[全店舗集計]シートに表示します。VSTACK関数の数式を入力している途中で、シートを操作するので混乱しないように注意しましょう。
3D集計の結果の数式を見てみましょう。「:」の左右が3D集計の対象となるワークシートの名前です。「:」は「から」を意味します。「!B3」は、そのセルB3を表すので、この例では「[秋葉原店]シートから[EC店]シートのセルB3」という意味です。SUM関数で合計しています。
余計な「0」を処理する
上記の手順で表を結合した結果、余計な「0」が含まれていますね。これは[新宿店][中野店][EC]のシートのセルA3~E7のうち、データのないセルが「0」に変換された結果です。
スピルの結果を“値”としてコピペしてから絞り込んでも構いませんが、FILTER関数を組み合わせて非表示にするテクニックも紹介します。入力する数式は以下の通りです。
=FILTER(VSTACK(秋葉原店:EC!A3:E7),CHOOSECOLS(VSTACK(秋葉原店:EC!A3:E7),1)<>0)
数式中のCHOOSECOLS関数は、指定したセル範囲から特定の列を取り出す関数です。「CHOOSECOLS(VSTACK(秋葉原店:EC!A3:E7),1)」は、VSTACK関数で結合した表の1列目を示します。
この数式をFILTER関数の条件(引数[含む])に利用して「0でない」ことを判定します。FILTER関数の構文は以下の通り。詳しくはこちらの記事も参考にしてください。
なお、VSTACK関数の数式をほかのセル(以下の場合はセルG3)に入力しておき、スピルの結果を参照すると、さらにスマートに記述することもできます。
=FILTER(G3#,CHOOSECOLS(G3#,1)<>0)