VBAのシートループ代わりにVSTACKで複数シートを統合する方法は?
結論
VSTACK関数で複数シートを縦結合、VBAのシートループが不要に
詳しい解説
VBAでFor Each ws In Worksheetsでシートをループして結合していた処理は、Excel 365のVSTACK関数で置き換えられます。`=VSTACK(Sheet1!A:D, Sheet2!A:D, Sheet3!A:D)`のように各シートの範囲を列挙すれば、縦方向に自動統合されます。INDIRECT関数と組み合わせて動的にシート名を生成することも可能です。VBAのようにループカウンタや結合先範囲の計算が不要で、シートが増減しても数式の修正だけで対応できます。
執筆・検証:田中 けんた|Excel歴15年・MOS資格保持
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| 非対応 | 非対応 | 非対応 | 対応 | 対応 |