PR

Excel VSTACK関数の使い方を徹底解説|複数リストを1つに結合!TRIMRANGE・FILTERとの組み合わせも紹介

Excel
記事内に広告が含まれています。

部署ごとのリストや月ごとの売上表を、1つの表にまとめたい…。
そんなとき、Excel 365の新関数 VSTACK(ブイスタック) が大活躍します。

これまでのように「コピペ」や「結合用のマクロ」は不要。
複数の範囲を一瞬で縦に連結し、常に最新状態の一覧を自動生成できます。

さらに、TRIMRANGE関数と組み合わせれば、空白や余白を気にせず、よりスマートにデータを扱えるようになり、FILTER関数と組み合わせることで、必要なデータのみ抽出することも可能です。

この記事では、以下のポイントを解説していきます。
手動でのコピーが面倒と思っている方、VBA(マクロ)で管理が大変だと思っている方、ぜひ参考にして業務に活用してみてください。

🔍今回の記事で分かること
  • VSTACK関数の基本構文と使い方
  • VSTACK関数が使えないと困ること/VSTACK関数のメリット
  • RANGETRIM関数・FILTER関数など、VSTACK関数をもっと使いこなす組み合わせ技

VSTACK関数とは?複数範囲を縦方向に積み上げる新機能

VSTACK関数とは、垂直方向に指定した範囲の配列を順番に追加する関数です。
・V = Vertical(垂直の)
・STACK = 積み上げる、並べる

という意味を持つ関数ですね。

VSTACK関数の構文

VSTACK関数の構文は以下の通りです。

=VSTACK(array1, array2, …)

複数の範囲を**縦方向に連結(スタック)**する関数です。
同じ列構成の表をまとめたいときに使います。

VSTACK関数の基本的な使い方

先述した通り、VSTACK関数は指定した複数範囲のデータを結合します。
例えば、シート別に以下のような人員名簿データがあったとします。
シートがバラバラになっていると管理しにくいので、データを結合して一つにまとめたいと思います。

VSTACK関数説明用のシート

この3シート別々になっているデータを一つのシートに結合する場合、VSTACK関数で以下のように範囲を指定します。

=VSTACK(シート1!A2:E4,シート2!A2:E5,シート3!A2:E7)

それぞれのシートにあるデータ範囲を指定することで、簡単にデータ結合することができます。

VSTACK関数説明画像

VSTACK関数が使えないと起こる「困りごと」

VSTACK関数は、Excel2021以降で使用できるようになった関数です。
VSTACK関数がない場合、データを結合するには大きく3つの方法しかありませんでした。

手動でデータコピー → 貼り間違え・手間がかかる

データを統合するには、各シート・各ファイルを開いて、手動でコピーする必要があります。
一つずつデータをコピーするとなると、とても手間がかかりますよね。また手動ではデータの貼り間違えが発生する可能性もあります。

労力がかかる割に、正確性も安定しないというデメリットがある方法です。
どうにかしたいんだけど、効率的にデータ結合する方法が分からないから、仕方なく手動コピーしている方も多いのではないでしょうか。

VBA(マクロ)でコピー → 管理が大変

VBA(マクロ)を組んで、自動的にデータコピーをする方も多いのではないでしょうか。
VBAを使用する場合、ちゃんとロジックを組めば、自動的にデータを結合することができるので、効率的な運用ができます。

ただ何かしら不具合が出たり、大元のデータ構成が変わったりなどに対応するには、VBA(マクロ)の管理をしないといけません。ツールを作成した人が異動・退職したりすると、引き継いだ人がどう管理したらいいか分からず、対応に苦慮するケースも多いと思います。

作業を効率化できる反面、エラーやトラブル時の対応能力が必要となるため、ハードルがやや高めです。

Power Queryでデータ結合 → 設定が複雑で扱いにくい

Excelには、「Power Query」という機能があります。
一言でいうと、複数データを自動で整理・統合するための仕組みになります。
Power Queryでは、結合したいデータをテーブル化し、「クエリの追加」で結合済みデータが新しいシートに出力されます。

Excelの便利な機能なのですが、設定がやや複雑且つ操作に迷うことが多いため、中上級者向けのテクニックです。
(個人的に、Accessを扱うことができる人であれば、あまり抵抗なく使用できる機能かなと思います)

VSTACK関数で、その「困りごと」が解決できる!自動的に1つの表へ結合可能

VSTACK関数を使えば、こうした手間が一気に解消されます。
冒頭でお伝えした通り、複数の範囲を指定するだけで、常に最新データを自動で結合できます。
そのため、データを手作業で貼る必要も、複雑なVBA(マクロ)を組まなくても、関数一つで簡単に実行できるため、このようなお困りごとをもっていれば、ぜひ活用してほしい関数です。

また、VSTACK関数は範囲を動的に扱えるため、データを追加・変更・削除した場合も自動的に結合したデータを更新してくれます。リアルタイムで変化を確認できるということですね。

VSTACK関数は他の関数との組み合わせが最強!

VSTACK関数は、VBA(マクロ)など複雑な知識がなくても簡単にデータ結合ができるため、とても便利な関数です。

ただ他の関数と組み合わせることで、さらに便利に活用することができます。
私も活用している、特に便利だと思う関数の組み合わせ方法をご紹介しますので、ぜひ活用してみてください。

VSTACK関数 & TRIMRANGE関数で、空白行を自動除外

これだけメリットを語ってきましたが、実はVSTACK関数にも弱点があります。
それは、「空白行もそのまま結合してしまう」ことです。

結合したいデータの構造は一緒だが、シートによっては10行しかないけど、あるシートでは100行もデータがあったりと、行範囲がバラバラなケースも多いと思います。
各シート・ファイルで範囲を指定しなければいけないですし、毎回範囲を変更しないといけないので、とても大変で手間がかかってしまいます。

先ほど紹介した3つのシートで説明すると、一番範囲が大きいシート3に範囲を合わせると、以下のように無駄な空白行まで結合されてしまいます。

=VSTACK(シート1!A2:E7,シート2!A2:E7,シート3!A2:E7)
VSTACK関数説明画像_空白行も結合されてしまう

そんなときは、「TRIMRANGE関数」と組み合わせることをオススメします。

TRIMRANGE関数とは?

TRIMRANGE関数とは、選択した範囲または配列から、外側の端からすべての空白行・列を除外する関数です。
つまり選択した範囲から、実際にデータが入っている部分だけを抽出することができます。

TRIMRANGE関数の構文

TRIMRANGE関数の構文は、以下の通りです。

=TRIMRANGE(range,[trim_rows],[trim_cols])

それぞれの引数の説明は以下の通りです。

引数内容詳細
rangeトリミングする範囲
trim_rowsトリミングする必要がある行を決定
※省略可
0:なし
1:先頭の空白行をトリミング
2:末尾の空白行をトリミング
3:先頭と末尾の両方の空白行をトリミング(規定値)
trim_colsトリミングする必要がある列を決定
※省略可
0:なし
1:先頭の空白列をトリミング
2:末尾の空白列をトリミング
3:先頭と末尾の両方の空白列をトリミング(規定値)

実際にVSTACK関数 & TRIMRANGE関数を組み合わせるには?

VSTACK関数とRANGETRIM関数を組み合わせることで、「空白行も統合してしまう」という問題を解決することができます。
どういうふうに組み合わせたらよいかは以下の通りです。

=VSTACK(TRIMRANGE(シート1!A2:E7,3),TRIMRANGE(シート2!A2:E7,2),TRIMRANGE(シート3!A2:E7,3))

以下の通り、先ほど表示されていた空白行が除外できたことが確認できます。

VSTACK関数説明画像_TRIMRANGE関数との組み合わせ

BEFORE/AFTERを比較する以下の通り。
空白部分が除外された、スッキリしたデータとなりました。

VSTACK関数説明画像_TRIMRANGE関数組み合わせ有無の比較

このように記述することで、
・空白行を自動的に除外
・各シートの行範囲が異なっても問題なし
・データが増えても即時反映

することができます。

日によって増減する売上データなど、そもそ範囲が変動するデータをピッタリ範囲指定することは困難です。なのでこのTRIMRANGE関数とは必須の組み合わせだと、個人的には考えています。

ちなみにTRIMRANGE関数は、Microsoft 365で使用できる関数です。
Microsoft 365であれば、TRIMRANGE関数以外にもExcelの最新機能を活用することができます。
さらなる業務効率化も期待できるので、まだ導入されていない場合は検討してみてください。

👉Microsoft 365の詳細はこちら

Amazon.co.jp: 【自動更新】Microsoft 365 Personal AI機能搭載 1年版 サブスクリプション | Win/Mac/iPad|インストール台数無制限(同時使用可能台数5台) : PCソフト
Amazon.co.jp: 【自動更新】Microsoft 365 Personal AI機能搭載 1年版 サブスクリプション | Win/Mac/iPad|インストール台数無制限(同時使用可能台数5台) : PCソフト

VSTACK関数 & FILTER関数で、条件に合うデータのみ抽出・結合

VSTACK関数のいいところは、統合したデータの順番を並び替えたり、フィルターをかけたりすることができる点です。
データを結合した後、必要なデータのみ抽出するケースは多いと思います。

そんなときは、FILTER関数と組み合わせることで、必要なデータのみを抽出することができます。

FILTER関数とは?

FILTER関数は、指定した範囲の中から特定の条件に一致するデータを抽出します。
従来のフィルター操作より柔軟で、リアルタイムにデータが更新されるのが特長です。

FILTER関数の構文やオートーフィルターとの違い、活用方法などは以下記事で解説しています。
こちらもぜひチェックしてみてください。

実際にVSTACK関数 &FILTER関数を組み合わせるには?

VSTACK関数とFILTER関数を組み合わせることで、「空白行も統合してしまう」という問題を解決することができます。

今回は統合したデータより、部署が「営業部」となっているデータのみ抽出してみます。
どういうふうに組み合わせたらよいかは以下の通りです。

=FILTER(VSTACK(シート1!A2:E4,シート2!A2:E5,シート3!A2:E7),INDEX(VSTACK(シート1!A2:E4,シート2!A2:E5,シート3!A2:E7),,3)="営業部")

INDEX関数は、指定される行・列のテーブルもしくは配列を返す関数です。
VSTACKで統合した配列データの中から、部署がある3列目を指定するために使用しました。
INDEX関数で、3列目にある部署を指定し、それが「営業部」であるものをフィルタリングしているため、営業部のデータのみを抽出することができます。

VSTACK関数説明画像_FILTER関数との組み合わせ

BEFORE/AFTERを比較する以下の通り。
様々な部署が混在する結合データから、営業部のみのデータを抽出することができました。

VSTACK関数説明画像_FILTER関数組み合わせ有無の比較

先ほど組み合わせたTRIMRANGE関数とも組み合わせることができるので、データ集計業務をより効率的に行うことができます。
ぜひ試してみてください。

VSTACK関数を使うときの注意点

列構成を揃える必要あり

VSTACK関数は同じ列構成のデータ結合に便利な関数です。
しかし、指定する対象範囲の列が異なると、不要なデータが入ってしまったり、列ズレを起こしてしまいます。列範囲に間違いがないか、しっかり確認する必要があります。

冒頭で紹介したシートで、例えばシート2→A~D列、シート3→B~E列で範囲指定したとします。
その場合、
・シート2:E列が反映されていないため、#N/Aエラーが発生
・シート3:B列の情報がA列に反映(列ズレ)、4列分しか範囲指定されていないため5列目は#N/Aエラーが発生

という状況になってしまいます。

VSTACK関数で参照列がずれたことによりエラーが発生した画像

範囲指定をしっかり確認しないと、誤った表になってしまいますので、この点は注意しましょう。

ちなみに#N/Aエラーって何?と思われた方は、以下の記事で詳しく解説しております。
こちらもぜひチェックしてみてください。

データが重なるとエラーが発生する

VSTACK関数でデータを結合する際、データが重なるとエラーが発生します。

例えば既存の入力データがあるシートにVSTACK関数でデータを引っ張った場合、データの行・列数が既存データと被ると、「#スピル!」エラーが発生してしまいます。
既存の入力データがある場合、そのデータと被らないようにする必要があります。(新しい別シートでVSTACK関数を使用することをオススメします)

VSTACK関数でスピルエラーが発生した画像

ちなみに既存の入力を消すことで、VSTACK関数で結合されたデータが表示されます。

TRIMRANGE関数はMicrosoft 365限定

関数の紹介部分でも記載しましたが、TRIMRANGE関数はMicrosoft 365限定の機能となります。
お使いのExcelによっては使用できないケースもあるため、ご注意ください。

TRIMRANGE関数に限らず、Microsoft 365では他にも便利な関数やAI機能(Copilot)、Pythonとの統合など、Excelの様々な最新機能を活用することができます。
さらなる業務効率化も期待できるので、まだ導入されていない場合はぜひ検討してみてください。

👉Microsoft 365の詳細はこちら

Amazon.co.jp: 【自動更新】Microsoft 365 Personal AI機能搭載 1年版 サブスクリプション | Win/Mac/iPad|インストール台数無制限(同時使用可能台数5台) : PCソフト
Amazon.co.jp: 【自動更新】Microsoft 365 Personal AI機能搭載 1年版 サブスクリプション | Win/Mac/iPad|インストール台数無制限(同時使用可能台数5台) : PCソフト

まとめ:Excelでデータ結合をもっと効率化しよう!

VSTACK関数でデータを統合することで、手動更新ゼロで常に最新データを扱う仕組みが作れます。
VBA(マクロ)が苦手な方でも、簡単にデータ統合ができる便利な関数ですね。

またVSTACK関数と他の関数を組み合わせることで、柔軟なデータ結合が可能に。
今回紹介したRANGETRIM関数、FILTER関数との組み合わせもぜひ試してみてください。

★VSTACK関数の特徴・便利な点のまとめ
✅ 部署別・月別などのリストを自動結合・リアルタイムで更新
✅ 空白を気にせずデータを結合(TRIMRANGE関数との組み合わせ)
✅ 条件に合うデータのみを柔軟に抽出・結合(FILTER関数との組み合わせ)

この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。

最後まで読んでいただき、ありがとうございました!

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

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