エクセル複数シートを縦に並べる方法4選!関数やパワークエリで作業時間を大幅に削減しよう

エクセル複数シートを縦に並べる方法4選!関数やパワークエリで作業時間を大幅に削減しよう
エクセル複数シートを縦に並べる方法4選!関数やパワークエリで作業時間を大幅に削減しよう
エクセル・ワード・ビジネス

エクセルで「1月」「2月」「3月」と分かれたシートのデータを、1枚のシートに縦に並べてまとめたいと思ったことはありませんか。手作業でコピー&ペーストを繰り返すと、時間がかかるだけでなく、貼り付けミスも起こりやすくなります。データの量が増えれば増えるほど、この作業は大きな負担になってしまいます。

実は、「エクセル複数シート 縦に並べる」という課題は、最新の関数や標準機能を使うことで驚くほど簡単に解決できます。一度設定してしまえば、元データが更新されたときに自動で反映される方法もあるため、毎月の集計作業が劇的に楽になります。初心者の方でもすぐに使えるテクニックから、一歩進んだ自動化の手法まで分かりやすく紹介します。

エクセルで複数シートを縦に並べる3つの基本手法

エクセルのデータを縦に並べる方法はいくつか存在しますが、お使いの環境やデータの性質によって最適な選択肢が異なります。まずは、どのような手法があるのか全体像を把握しましょう。大きく分けて「関数」「標準機能(パワークエリ)」「VBAマクロ」の3つのアプローチが主流となっています。

最新のVSTACK関数を活用する方法

最新のMicrosoft 365やExcel 2021以降をお使いであれば、VSTACK(ブイスタック)関数を使うのが最も手軽で迅速です。この関数は、複数の範囲を指定するだけで、それらを垂直(Vertical)に積み重ねて表示してくれます。数式を一つ入力するだけで完了するため、難しい設定は一切不要です。

また、元のデータが変更されると、関数でまとめた先の表もリアルタイムで更新されるのが大きなメリットです。わざわざ再実行の手間がかからないため、常に最新のデータを一覧で確認したい場合に最適です。これまでのエクセル作業が嘘のようにスムーズになる魔法のような関数といえるでしょう。

パワークエリで大量データを自動結合する方法

大量のデータを扱ったり、データの形を整えながら結合したりしたい場合は、「パワークエリ」という機能が頼りになります。パワークエリは、外部ファイルや複数のシートからデータを吸い出し、一つの表に加工して出力するツールです。Excel 2010以降であれば標準、またはアドインとして利用可能です。

この機能の素晴らしい点は、「データの更新」ボタンを押すだけで、全シートの最新情報を一瞬で取得し直せる点にあります。また、シートごとに列の順番がバラバラでも、項目名さえ一致していれば正しく紐づけて並べることができるため、非常に柔軟性が高いのが特徴です。

VBAマクロで複雑な処理を自動化する方法

「シートの数が100枚以上ある」「特定のキーワードが含まれるシートだけを抜き出したい」といった複雑な要望があるなら、VBAマクロが適しています。プログラムを組むことで、特定の条件に合致したデータだけを自動でコピーして、別のシートの末尾に次々と貼り付けていく処理が可能です。

マクロと聞くと難しそうに感じますが、定型文のようなコード(プログラムの文章)を貼り付けるだけで使えるものも多くあります。一度作成してしまえば、ボタンをクリックするだけで一連の作業が完了するため、定型業務の完全自動化を目指す方には非常に強力な味方となります。

どの方法を選ぶべきか迷ったら、まずは「VSTACK関数」が使えるかチェックしてみてください。使えない場合や、データの加工が必要な場合は「パワークエリ」を検討するのが、現代のエクセル作業における定石です。

VSTACK関数を使って瞬時に複数シートを縦に結合する方法

最新のエクセルユーザーに最もおすすめなのが、VSTACK関数を使った手法です。以前までのエクセルでは、複数のシートを関数でまとめるのは非常に高度なテクニックが必要でしたが、今では一行の数式で解決します。具体的な手順と、より便利に使うためのコツを見ていきましょう。

VSTACK関数の基本的な使い方と構文

VSTACK関数は、指定した複数のセル範囲を上から順番に並べる関数です。基本の形は「=VSTACK(配列1, 配列2, …)」となります。例えば、シートAの範囲とシートBの範囲をまとめたいときは、空のシートのセルに「=VSTACK(‘シートA’!A2:E10, ‘シートB’!A2:E10)」と入力します。

これだけで、シートAのデータの下に、シートBのデータがぴたっとくっついた状態で表示されます。数式を入力したセルから下に向かって、自動的に結果が溢れ出す「スピル」という機能が働くため、事前に範囲分のセルを確保しておく必要もありません。非常にスマートな解決方法です。

複数シートを一括で指定する「3D参照」のコツ

まとめたいシートの数が多い場合、一つずつシート名を指定するのは大変です。そこで活用したいのが「3D参照(串刺し参照)」という技です。例えば、1月から12月までのシートが並んでいる場合、「’1月:12月’!A2:E100」のように指定することができます。

このように記述すると、1月シートから12月シートまで、その間に挟まれているすべてのシートの指定範囲を自動で縦に並べてくれます。後からシートを増やしたとしても、指定した範囲の間に新しいシートを移動させるだけで、集計用シートに自動で反映されるようになるため、管理が非常に楽になります。

見出しを重複させずにデータをまとめるテクニック

普通にVSTACK関数で各シートの「A1:E10」といった見出しを含む範囲を結合してしまうと、途中に何度も「日付」「商品名」といった項目名が入ってしまいます。これを防ぐには、1つ目のシートだけは見出しを含めて指定し、2つ目以降のシートはデータ行(2行目以降)だけを指定するのがコツです。

もし3D参照を使っていて個別指定が難しい場合は、あとからFILTER関数を組み合わせて、見出しと同じ文字列が入っている行を除外するといった工夫も可能です。表としての美しさを保ちつつ、データを一つに統合することができます。

VSTACK関数の入力例

=VSTACK(‘4月’!A1:E50, ‘5月’!A2:E50, ‘6月’!A2:E50)

このように1枚目のシートは1行目(見出し)から、2枚目以降は2行目から指定することで、きれいな1つの表になります。

Power Query(パワークエリ)で複数シートを自動で縦にまとめる

関数の次に強力なのが、パワークエリを使った結合です。シートごとにデータの行数が違ったり、今後シートがどんどん増えていったりする場合、パワークエリの方が管理しやすいことがあります。少し手順は多いですが、画面をクリックしていくだけで設定できるため、プログラミング知識は不要です。

パワークエリを起動してデータを読み込む手順

まず、エクセルの「データ」タブにある「データの取得」から「ファイルから」→「Excelブックから」を選択します。自分自身のファイルを選択することも可能ですが、基本的には結合したいデータが入ったファイルを選びます。「ナビゲーター」画面が表示されたら、右下の「データの変換」をクリックしましょう。

これでパワークエリのエディター画面が開きます。最初は一つのシートしか見えていないかもしれませんが、左側のクエリ一覧や「ソース」の設定を確認することで、ブック内にあるすべてのシートを一覧として取得する準備が整います。この画面はエクセルとは別ウィンドウで開く、データ加工専用の作業部屋のようなものです。

複数のテーブルを「クエリの付加」で結合する

パワークエリ内で複数のシート(テーブル)を縦に並べる操作を「付加(Append)」と呼びます。「ホーム」タブにある「クエリの付加」をクリックし、まとめたいシートを選択します。「3つ以上のテーブル」という選択肢を使えば、一気に多くのシートを結合対象に加えることができます。

パワークエリの優れた点は、列の名前を自動で判別してくれることです。もしシートAでは「名前」がA列、シートBでは「名前」がB列にあったとしても、項目名さえ同じなら賢く縦に並べてくれます。手作業のコピペでは絶対に不可能な、非常に高度で正確な結合処理です。

空白行の削除とデータの読み込み

シートを結合すると、中には空の行が含まれてしまうことがあります。パワークエリなら、特定の列を選んで「空白の削除」フィルタをかけるだけで、不要なゴミデータを一掃できます。データの整形が終わったら、最後に「閉じて読み込む」をクリックすれば、新しいシートにまとまったデータが書き出されます。

一度この仕組みを作ってしまえば、元のシートにデータを追加したり、新しいシートを増やしたりした後に、「すべて更新」ボタンを押すだけで、全工程が自動でやり直されます。毎月1時間かかっていたコピペ作業が、わずか数秒で終わるようになる瞬間です。

パワークエリで読み込むデータは、あらかじめ「テーブル」形式(Ctrl+T)にしておくと、名前の管理がしやすくなり、ミスが格段に減ります。可能な限りテーブル化してから作業を始めるのがおすすめです。

VBAマクロで複数シートを縦に並べる作業を自動化する

「パワークエリを覚えるのが面倒」「もっとボタン一発で完結させたい」という場合には、VBAマクロが解決策となります。マクロを使えば、各シートを巡回してデータをコピーし、集計用シートの末尾に貼り付けるという動作をプログラムに代行させることができます。

全シートを1枚にまとめる標準的なマクロコード

マクロを使って複数シートを縦に並べる場合、一般的には「For Each」という構文を使って、ブック内のすべてのシートを順番に処理します。まず集計用のシートを用意し、そこへ各シートのデータをコピーして貼り付けていく流れです。最終行を自動で判定させることで、データが上書きされずに下に溜まっていくようにします。

例えば、「各シートの2行目から最終行までをコピーして、集計シートの次に空いている行に貼り付ける」という命令を数行書くだけで、シートが何枚あっても一瞬で処理が終わります。手作業なら数分かかる作業が、コンマ数秒で完了する様子は見ていて非常に爽快です。

特定の条件で抽出して結合する方法

マクロの真骨頂は、柔軟な条件分岐にあります。「シート名が『2023』で始まるものだけをまとめたい」とか「A列が空白でない行だけをコピーしたい」といった細かいルールを盛り込めます。これにより、不要なバックアップ用シートや計算用シートを飛ばして、必要なデータだけを正確に収集できます。

プログラムの中で「If文(もし~なら)」を使うことで、人間の判断を介さずに自動で選別を行わせることが可能です。大量のシートがあるファイルから、特定の基準でデータをピックアップして縦に並べる必要があるなら、マクロ以外の選択肢はないと言っても過言ではありません。

マクロを実行する際の注意点と保存形式

マクロを利用するには、エクセルの保存形式を「Excel マクロ有効ブック(.xlsm)」にする必要があります。通常の「.xlsx」形式では、せっかく書いたコードが保存されずに消えてしまうので注意しましょう。また、マクロは「元に戻す(Ctrl+Z)」が効かないという特徴があります。

実行する前には必ずファイルを保存するか、コピーを作成しておく癖をつけてください。また、他人が作成したマクロを実行する際は、セキュリティ警告が出ることがあります。信頼できる内容であることを確認してから、「コンテンツの有効化」を行って動作させるようにしましょう。

簡単なVBAコードのイメージ

Sub SheetsCombine()

 For Each ws In Worksheets

  If ws.Name <> “集計” Then

   ws.Range(“A2:E10”).Copy Destination:=Sheets(“集計”).Cells(Rows.Count, 1).End(xlUp).Offset(1)

  End If

 Next ws

End Sub

※「集計」シート以外のすべてのシートのA2:E10を、集計シートの末尾に貼り付けるコードです。

複数シートを縦に並べる際によくあるトラブルと解決策

複数シートを一つにまとめる作業をしていると、予期せぬエラーやデータのズレに遭遇することがあります。「なぜかエラーが出る」「データがうまく繋がらない」といった悩みを解決するためのポイントを整理しました。

列の順番や項目名が一致していない場合の対処

VSTACK関数やマクロで結合する場合、大前提として「すべてのシートの列の並び順が同じ」である必要があります。シートAでは「日付、商品、金額」なのに、シートBでは「日付、金額、商品」となっていると、縦に並べたときにデータがごちゃ混ぜになってしまいます。

もし列の順番がバラバラなデータを扱わなければならない場合は、パワークエリの利用を強く推奨します。パワークエリは列名(ヘッダー)を見てデータを紐づけるため、順番が違っても正しく整列させてくれます。関数で解決したい場合は、事前にCHOOSECOLS関数などで列を入れ替える手間が必要になります。

セルの書式や日付形式が崩れてしまう時の修正法

VSTACK関数などでデータを結合した際、日付が「45123」のような数字(シリアル値)に変わってしまったり、通貨の「¥」マークが消えてしまったりすることがあります。これは、関数の結果が表示されるセルの「表示形式」が、元のセルの設定を引き継いでいないために起こります。

解決策はシンプルで、結合先のセル範囲を選択し、「ホーム」タブの「数値」グループから適切な形式(日付や通貨など)を再設定するだけです。データそのものが壊れたわけではなく、見た目の設定が標準に戻っただけなので安心してください。一度設定しておけば、更新してもその書式は維持されます。

データ量が多くて動作が重くなった時の軽量化テク

数万行に及ぶデータを複数シートから結合すると、エクセルの再計算に時間がかかり、動作が重くなることがあります。特に多くの関数を組み合わさせている場合に顕著です。この場合は、関数の代わりにパワークエリを使って、必要なときだけ「更新」する仕組みにするのが最も効果的です。

また、不要な列まで結合対象に含めないことも重要です。例えばA列からZ列まであっても、集計に必要なのがA列からE列だけなら、範囲指定を絞り込みましょう。処理するデータ量を物理的に減らすことで、ストレスのない軽快な動作を取り戻すことができます。

発生している現象 主な原因 おすすめの対策
#VALUE! エラーが出る 範囲の列数が一致していない 各シートの選択範囲の列数を揃える
日付が5桁の数字になる セルの表示形式が「標準」 セルの書式を「短い日付形式」に変更
更新が反映されない パワークエリの更新忘れ 「データ」タブの「すべて更新」を押す
動作が非常に重い 数式の多用・範囲が広すぎ パワークエリに切り替える

まとめ:エクセルで複数シートを縦に並べる最適な方法を選ぼう

まとめ
まとめ

エクセルで複数シートを縦に並べる作業は、かつてのような手動のコピペから、自動化されたスマートな処理へと進化しています。まず、お使いのエクセルが最新版(Microsoft 365など)であれば、VSTACK関数を試してみてください。シンプルで更新も自動なため、ほとんどのケースで第一選択となります。

より本格的なデータ加工や、古いバージョンのエクセルでの自動化が必要な場合は、パワークエリが非常に頼もしい存在です。列の順番の違いを吸収し、不要な行を自動で削ぎ落としてくれるため、ビジネス現場での実用性はナンバーワンと言えるでしょう。さらに高度な制御が必要な時だけ、VBAマクロを検討してみてください。

どの方法を選んだとしても、一度仕組みを作ってしまえば、これまで数時間かかっていた作業が数分、あるいは数秒にまで短縮されます。空いた時間で、より重要なデータの分析や企画業務に取り組めるようになります。この記事を参考に、あなたの環境にぴったりの方法を見つけて、エクセル作業の効率化をぜひ実現させてください。

タイトルとURLをコピーしました