Excelの小技 ~離れた列のデータを取得する~
こんにちは、システム革新Gのgrandpa Hamaです。
久しぶり(今年初めて)の投稿になります。
今回はCHOOSECOLS関数のお話です。
・CHOOSECOLS関数
指定した列番号だけを抜き出して新しい配列を作る関数です。
バージョン:Microsoft 365、Excel 2024、およびWeb版Excel
構文:=CHOOSECOLS(array,col_num1,[col_num2],…)
構文の詳細はExcelのヘルプで確認してください。

目次
Excelの小技 ~離れた列のデータを取得する~
-はじめに
「氏名ランキング」というシートに以下のようなデータがあるとします。

氏名をキーとして、氏名カナや氏名英字、ランキングを取得する際に、以前まではVLOOKUPを使用して取得していたと思います。
氏名カナ :=VLOOKUP($A2,氏名ランキング!$A$1:$D$11,2,FALSE)
氏名英字 :=VLOOKUP($A2,氏名ランキング!$A$1:$D$11,3,FALSE)
ランキング:=VLOOKUP($A2,氏名ランキング!$A$1:$D$11,4,FALSE)
今回の例題では項目数が少ないので良いのですが、項目数が多くデータ量も多い場合は、
すべての行/列に計算式を埋め込まなくてはならないため、Excelが重くなってしまいます。
XLOOKUP関数を使用すれば、氏名カナの列に下記の関数を埋め込むことで連続したデータを取得することができます。
=XLOOKUP($A2,氏名ランキング!$A:$A,氏名ランキング!$B:$D,”データなし”,0)

皆さんも最近はXLOOKUPを使用していることと思います。
では、氏名カナとランキングの離れたデータを取得したい場合はどうしたら良いでしょうか。
(氏名英字は取得しない)
-離れた列のデータ取得
今回、一番話したかったのは、この離れたデータの取得についてです。
XLOOKUP関数とCHOOSECOLS関数を組み合わせて使うことで簡単に取り出すことができます。
氏名カナの列に下記の関数を埋め込むことで離れたデータを取得することができます。
=XLOOKUP($A2,氏名ランキング!$A:$A,CHOOSECOLS(氏名ランキング!$A:$D,{2,4}),”データなし”,0)
「CHOOSECOLS(氏名ランキング!$A:$D,{2,4})」で「氏名ランキング」シートのA列からD列のうち、
2番目と4番目を取得していることになります。

-おわりに
長い間、VLOOKUPを使っていたためか、XLOOKUP関数で連続する列データが取得できることに気づかず、VLOOKUPと同じような使い方をして1列ずつデータ取得して、たくさん関数を埋め込んみExcelを重くしていました。
また、CHOOSECOLS関数と組み合わせることで離れた列のデータも取得できることを知り、驚きでした。
CHOOSECOLS関数だけではなく、INDEX関数と組み合わせても取得することができます。
Excelが重くならないように皆さんも工夫してみてください。
2026/3月時点の情報をもとにしています。
