残業を減らす!Officeテクニック

ExcelのXLOOKUP関数で連続しない列から値を取り出すテク ~扱いやすいCHOOSECOLS関数

必要な列だけを選択して取り出す

以前にXLOOKUP関数にHSTACK関数を組み合わせて、連続しない列を取り出すテクニックを紹介しました。列数の多い表から必要な情報のみを取り出す際に役立ちます。

XLOOKUP関数にHSTACK関数を組み合わせて、指定した会員IDに対応する「氏名」「受講履歴」「会員種別」「健康スコア」を取り出した例

 この例で入力している数式は以下の通りです。

=XLOOKUP(Q2,A2:A101,HSTACK(B2:B101,L2:L101,F2:F101,O2:O101))

 必要な列を引数として指定できるため、数式を理解しやすいメリットがあります。今回は視点を変えて、CHOOSECOLS関数を使って同じ処理を実現する方法を解説します。

表全体から利用する列を選択するCHOOSECOLS関数

 CHOOSECOLS関数は、表全体からどの列を使うかを選ぶことに主眼を置いた関数です。表全体を配列(セル範囲)として捉えて「何番目」かを指定します。構文は以下の通りです。

CHOOSECOLS関数の構文。[配列]に指定したデータから、先頭列を1列目として[列番号]に数値で指定したデータを取り出す。結果はスピルとして表示される

 必要な列への参照を数値で指定するため、参照範囲を1か所にまとめた数式にできます。列数の多い表でも、全体を前提にした設計がしやすい点が特徴です。

 例えば、会員IDから、①「氏名」、②「利用回数/月」、③「会員種別」、④「受講履歴」を取り出す場合は、表全体(A2:O101)から、2、7、6、12列目を取り出すので、以下のように指定します。

=CHOOSECOLS(A2:O101,2,7,6,12)

表全体(A2:O101)から、2、7、6、12列目を取り出す場合は「=CHOOSECOLS(A2:O101,2,7,6,12)」と指定する
CHOOSECOLS関数で「氏名」「利用回数/月」「会員種別」「受講履歴」を取り出した例

XLOOKUP関数とCHOOSECOLS関数を組み合わせる

 スピルで表示されたCHOOSECOLS関数の結果を、XLOOKUP関数の引数[戻り範囲]に指定するだけです。引数[列番号]は、[配列]の左端を1列目として数えることに注意してください。ここでは[配列]に「A2:O101」と指定しているので、A列が1列目、つまり「氏名」は2列目となります。

=XLOOKUP(Q2, A2:A101, CHOOSECOLS(A2:O101,2,7,6,12))

XLOOKUP関数の引数[検索値]と[検索範囲]を指定する
[戻り範囲]にCHOOSECOLS関数の数式を埋め込む。「=XLOOKUP(Q2, A2:A101, CHOOSECOLS(A2:O101,2,7,6,12))」となる
会員IDに対応する「氏名」「利用回数/月」「会員種別」「受講履歴」が取り出せた

 HSTACK関数は「列を組み合わせる」発想、CHOOSECOLS関数は「列を選び直す」発想と言えるでしょう。結果は同じでも、扱うデータの単位が異なるため、表全体を部品として再利用したい場合には、CHOOSECOLS関数の方が扱いやすくなります。

 用途や規模によって使い分けるのが理想ですが、表を前提にしたデータ処理では、CHOOSECOLS関数という選択肢を知っておくと、数式設計の幅が広がります。