ExcelでVSTACK関数を使うと、複数のシートからデータを集めることができます。
※VSTACK関数 by Sony α7SⅢ+70-200mmF2.8Ⅱ
VSTACK関数の基礎
VSTACK(ブイスタック)関数は、記事執筆現在(2022年10月16日)、
・Microsoft 365(Windows、Mac)
で使えるものです。
ブイ=垂直
スタック=積み重ねる
という意味で、こういった赤枠で示した複数の範囲のデータをくっつけることができます。
VSTACK関数は次のように使います。
=VSTACK(
の後に、マウスで、くっつけたい範囲を選択しましょう。
この場合、セルA1からB7です。
カンマを入れ、
=VSTACK(A1:B7,
さらにくっつけたい範囲をマウスでドラッグして選びます。
ここでは、セルD1からE5です。
これで、指定した範囲(秋葉原、目黒)の売上をくっつけることができました。
指定した範囲だけくっつけることができます。
このVSTACK関数は、1つのセル(セルA10)に入れるだけで、それ以降のものも表示できるのです。
(スピルといいます)
データの下のほうはこうなっています。
このVSTACK関数、使いどころとして考えられるのは、複数のシートのデータを1つにする場合です。
シートを1つにできるVSTRAC関数
このように秋葉原支店から五反田支店までのデータが、シートごとにあるとします。
すべての支店のデータを集計するのは大変です。
こういった場合にVSTACK関数を使うことができます。
VSTACK関数の基本は、
=VSTACK(範囲、範囲……)
というもの。
※「範囲」は、「配列」という表現をします。
この場合には、秋葉原支店から五反田支店までの範囲を指定すればいいのです。
ただ、1つずつ指定するのは大変。
まとめて指定する方法があります。
ただ、VSTACK関数の基本的な使い方もおさえておきましょう。
まずは、
=VSTACK(
と入れ、まずは秋葉原支店のシートを指定します。
範囲は、セルA1からB85です。
(列AからBというように指定できればいいのですが、エラーになります)
次に目黒支店、その次に……と指定していけば、
複数のシートのデータをまとめることができます。
まとめて設定するには、
=VSTACK(
と入れ、
・秋葉原のシート見出しをクリック
・Shiftキーを押しながら、指定する範囲の最終シートである五反田のシート見出しをクリック
とし、
範囲を入力します。
’(入力したほうがうまくいきます)
ここでは、セルA1からB100を指定しました。
各シートで、データの数が違うのですが、それを1つずつ設定するのは大変なので、ざっくりと多めに指定しましょう。
データがないところは、このように0となりますが、後で削除もできますので。
これを解決する方法もあります。
FILTER関数を使って、「B列が0より大きいときのみ、データを持ってくる」ということができるのです。
このFILTER関数は、
=FILTER(範囲、条件)
というルールで、
・範囲→VSTACKで指定したもの(各シートのセルA2からB100)
・条件→各シートのセルB2からB100で0より大きいもの
と設定しています。
実際は、もっと多めに10000行くらいで設定しておくといいでしょう。
VSTACK関数は、シートだけでなく複数のファイル(ブック)からも集めることができます。
このVSTACK関数は、おもしろいのですが、じゃあ、使うかどうか。
手放しでおすすめできるものではありません。
VSTRAC関数を使うかどうか
今回の記事の事例で取り上げた、このようなデータや
シートごとに分かれたデータ。
こういったケースがあるのは好ましくありません。
データを集計することもできませんし、扱いにくくなりますので。
Excelのデータを整えておけば、VSTACK関数を使う必要もないのです。
もし、こういったデータを受け取った、つくってしまったというなら致し方ありませんが。
VSTACK関数を覚えておいて損はありません。
上記のように、FILTER関数との組み合わせが必要な場合もありますし、複数のファイルの場合だと一工夫必要ですが。
Excelのアップデートの方向性は、「マクロを使わずにExcelで処理できるように」というもので、今後もそうなると思われます。
こういうのもそうでしょうし。
フォルダ内の複数のExcelファイルを結合する「取得と変換」(Power Query)
これらはこれらで覚えておいて、目の前の仕事を効率化することが先決です。
ただ、同様のケースだと、Excelマクロ(VBA)で解決する方法もあります。
こういったプログラムです。
シート「merge」以外のすべてのシートのデータを集める
という処理をしています。
Sub macro() Dim Ws For Each Ws In Worksheets If Ws.Name <> "merge" Then Dim Last_row Last_row = Ws.Range("a" & Rows.Count).End(xlUp).Row Dim Merge_Last_row Merge_Last_row = Worksheets("merge").Range("a" & Ws.Rows.Count).End(xlUp).Row Ws.Rows("2:" & Last_row).Copy Worksheets("merge").Ws.Range("a" & Merge_Last_row + 1) End If Next End Sub
シートがいくら増えてもデータがいくら増えても一瞬で処理できるのです。
2行目からデータがある行までをコピーするので、どんな形式のファイルにも対応できます。
値のみコピーをするならもう少し手を加える必要がありますが。
応用すれば複数のファイルのデータを集めることもできます。
複数のファイル(ブック)を1枚のシートに効率よくまとめるマクロ
Excelマクロの敷居は低くありませんが、汎用性、拡張性があるのはこちらです。
また、Excel、ITを使いこなすためにも、Excelマクロ=プログラミングは、欠かせません。
(考え方が古いのかもしれませんが……。何事にも基礎スキルは大事だと思いますし、ITはやはりプログラミングすることが基礎です)
Excelの新機能をおさえつつ、Excelマクロも使えるようにしておくのが理想です。
■編集後記
昨日は、オフ。
妻が美容院だったので娘といろいろと遊びました。
その他は、Switchのスパロボ30を。
夜はプール。
疲れずに泳ぐ方法を研究。
いい感じになりました。
■1日1新→Kindle『1日1新』
豊洲 マクドナルド
豊洲 おにやんま カウンター
■娘(5歳)日記→Kindle『娘日記』・ Kindle『娘日記Ⅱ』
ハロウィンで使う魔女のほうきを探す旅へ。
100均だといいものがなく、ネットでも同様でした。
自転車で隣町へ。
ひとまず、ハッピーセット狙いでマクドナルト。
リカちゃんを無事入手し、ホームセンターへ行き、いい感じのほうきが見つかりました。
その後、うどんを食べて帰宅。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方