CHOOSECOLS ― 離れた列を自在に抽出・並び替え・絞り込み
📌 基本構文
指定した配列(テーブルや範囲)から、必要な列番号だけを選んでスピル展開する関数です。
列の順序を自由に組み替えることもでき、マイナス値を使えば「右から○番目」の指定も可能です。
多列テーブルから「特定列だけ表示したい」「FILTER/XLOOKUP結果の列を絞りたい」「列順を組み替えたい」「右端から取りたい」すべてに対応できます。 FILTER・XLOOKUP・SORT・UNIQUE・VSTACKと組み合わせるとさらに強力になります。
【1】基本:離れた列を指定して抽出
10列あるテーブルから「ID(1列目)」「商品名(3列目)」「価格(5列目)」だけを別の場所に展開する例です。
| A (1) | B (2) | C (3) | D (4) | E (5) | |
| 1 | ID | 担当者 | 商品名 | カテゴリ | 価格 |
| 2 | 1001 | 田中 | PC | 家電 | 150,000 |
| 3 | 1002 | 鈴木 | マウス | 周辺機器 | 3,000 |
| 4 | 1003 | 佐藤 | デスク | 家具 | 25,000 |
| G | H | I | |
| 2 | 1001 | PC | 150,000 |
| 3 | 1002 | マウス | 3,000 |
| 4 | 1003 | デスク | 25,000 |
マイナス指定:右から○番目の列を取得
列の順番を入れ替える
【2】旧バージョンでの代替法(〜2019)
CHOOSECOLSが使えない環境では、INDEX関数で各列を個別に取り出します。
【3】実務で使う応用パターン集
🔥 パターン1:FILTER × CHOOSECOLS ― 条件抽出+列絞り
FILTERで条件に合う行を抽出した後、CHOOSECOLSで必要な列だけを表示します。 「26列ある表から営業部だけ抽出して4列だけ見たい」といった実務でよくある状況を1本の数式で解決できます。
① FILTERで営業部だけ抽出(全26列)→ ② CHOOSECOLSで1・3・5・26列目だけ表示
| 1 | 2 | 3 | 4 | 5 | … | 26 |
| ID | 氏名 | 部署 | 役職 | 商品 | … | 売上 |
| 1001 | 田中 | 営業部 | 課長 | PC | … | 500万 |
| 1003 | 佐藤 | 営業部 | 主任 | サーバ | … | 300万 |
| ID | 部署 | 商品 | 売上 |
| 1001 | 営業部 | PC | 500万 |
| 1003 | 営業部 | サーバ | 300万 |
🔥 パターン2:XLOOKUP × CHOOSECOLS ― 検索結果から必要列だけ
XLOOKUPの戻り範囲を広く取り、CHOOSECOLSで必要な列だけ絞ります。 VLOOKUPを何本も書いていた処理が1本に集約されます。
XLOOKUPでB〜F列(5列)を返す → CHOOSECOLSで1列目(氏名)・2列目(部署)・4列目(メール)だけ表示
| A | B(1) | C(2) | D(3) | E(4) | F(5) |
| 社員ID | 氏名 | 部署 | 役職 | メール | 電話 |
| 1001 | 田中太郎 | 営業部 | 課長 | tanaka@… | 03-x |
| 氏名 | 部署 | メール |
| 田中太郎 | 営業部 | tanaka@… |
パターン3:SORT × CHOOSECOLS ― ソート結果から列を絞る
5列目(価格)降順でソート → 1・3・5列目だけ表示
パターン4:UNIQUE × CHOOSECOLS ― 重複除去後に必要列だけ
重複除去済みデータの2・4列目だけ残す。マスタ一覧の作成に便利。
🔥 パターン5:VSTACK × CHOOSECOLS ― 複数シート縦結合+列絞り
月別・拠点別シートを縦結合して、必要な列だけを統合レポートとして出力します。
3シートを縦結合(全6列)→ 1列目(ID)・3列目(商品名)・6列目(売上)だけ表示
🔥 パターン6:LET + VSTACK + FILTER + CHOOSECOLS ― 全工程を1数式に
「複数シート統合 → 条件絞り → 列選択」を LET で段階的に処理し、可読性を上げます。
① 4シートを縦結合 → ② カテゴリ列(4列目)が「家電」の行だけ抽出 → ③ 必要な4列だけ出力
CHOOSECOLS(統合, 4) を使えば、VSTACKした配列の特定列をそのまま条件列として参照できます。
🔥 パターン7:FILTER × SORT × CHOOSECOLS ― 三段ネストで帳票を1本生成
① 営業部だけ絞る → ② 売上降順でソート → ③ 4列だけ表示
パターン8:列順の組み替え ― 外部システム向けフォーマット変換
C→B→D→A の順に並び替えて出力。外部システムの取込フォーマットに合わせる。
パターン9:バイナリ検索 × CHOOSECOLS ― XLOOKUPの高速化と連携(作業シート活用)
作業シートに SORTBY でソート済みデータを出力しておき、XLOOKUP がバイナリ検索でそれを参照。 さらに CHOOSECOLS で必要な列だけ絞ります。
【4】注意点:HSTACK と混同しない
「2つのテーブルを横に並べる HSTACK と CHOOSECOLSを組み合わせる」パターンは実務では推奨しません。
HSTACKはキー照合なしで機械的に横結合するため、行の並び順が違うとデータがズレます。
| ID | 氏名 |
| 1001 | 田中 |
| 1002 | 鈴木 |
| ID | 評価 |
| 1002 | B |
| 1001 | A |
| ID | 氏名 | 評価 |
| 1001 | 田中 | B ✗ |
| 1002 | 鈴木 | A ✗ |
【5】組み合わせパターン早見表
| 組み合わせ | できること | 実務シーン |
|---|---|---|
| FILTER × CHOOSECOLS | 条件抽出+列絞り | 部署別データの帳票 |
| XLOOKUP × CHOOSECOLS | 検索結果から必要列だけ | 入力フォーム・検索画面 |
| SORT × CHOOSECOLS | ソート結果+列絞り | ランキング表 |
| UNIQUE × CHOOSECOLS | 重複除去+列絞り | マスタ一覧の作成 |
| VSTACK × CHOOSECOLS | 縦結合+列絞り | 月別・拠点別シートの統合 |
| VSTACK × FILTER × CHOOSECOLS | 縦結合+条件絞り+列選択 | 年間サマリレポート |
| FILTER × SORT × CHOOSECOLS | 絞り+並替+列選択 | ダッシュボード帳票 |
| CHOOSECOLS(マイナス指定) | 右端から逆引き | 最新月の自動取得 |
| CHOOSECOLS で列順変更 | 列の並び替え | 外部システム向けデータ整形 |
| 作業シートSORT + バイナリXLOOKUP + CHOOSECOLS | 大量データ高速検索+列絞り | 50万行規模のマスタ検索 |
「① 統合(VSTACK)→ ② 絞る(FILTER)→ ③ 並べる(SORT)→ ④ 列を選ぶ(CHOOSECOLS)」
の順を意識すると可読性が上がります。複雑な場合は LET 関数で中間変数を使うとさらに見通しが良くなります。
VSTACK で大量データを結合した上に FILTER・SORT・CHOOSECOLS を幾重にもネストすると、再計算が重くなることがあります。
体感で遅い場合は以下のアクセス回数・計算回数を減らすアプローチが有効です:
- LET関数で計算をまとめる: 同じ範囲の集計や結合をLET内で1度だけ計算させ、メモリ上で使い回す。
- 作業シートに展開する: 重い処理(VSTACKでの全シート結合など)は別シートに一度スピルで出力しておき、最終的な帳票からそのスピル範囲を参照する。
- スピルで1本の数式にまとめる: XLOOKUPなどでVSTACKした範囲を検索する際、オートフィルで下に何千行もコピーするとVSTACKの重い結合処理が「行数分」毎回走ってしまいます。検索値を配列で指定してスピルさせれば、VSTACKの処理は1回だけで終わるため劇的に軽くなります。