

「人生は選択(choose)の連続である」なんていうシェイクスピアの格言を持ち出すまでもなく、毎日のデスクワークは、むずかしい選択の連続ですね。
CHOOSEしてますか?
Microsoft ExcelのCHOOSE関数自体は、初期レガシーExcelの頃からずっと使用可能だった、伝統的な関数の1つです。しかし、この弟分にあたる2つのCHOOSE関数が、2022年にリリースされていたことをご存じでしたか?
この新関数がとても便利なので、実務ですぐにでも応用できる活用例を考えてみました。
CHOOSECOLSは、”指定列”のみを選択する関数
CHOOSEROWSは、”指定行”のみを選択する関数
まず、最も基本となるCHOOSE関数の構文は、以下の通りです。
=CHOOSE(インデックス番号, 値1, [値2], [値3], …)
インデックス番号(必須);選択したい値の位置を示す番号を指定。
値1, [値2], [値3], …(値1は必須);CHOOSE関数によって選択できる値のリスト。
最大254回の分岐が可能。
たとえば、
「インデックス1 = 新規顧客」
「インデックス2 = 既存顧客」
「インデックス3 = 休眠顧客」
と定義した場合、
=CHOOSE(A1,”新規”,”既存”,”休眠”)
上記のように、A1セルのインデックス番号から、当該顧客がどの分類に属するのかを選択するような場合に使用します。
次に、おもにMicrosoft 365版Excelで使える2つの新関数では、CHOOSEの後ろに”COLS”(columns(列)の略)と、”ROWS”(行)というワードが付いてきます。つまり、指定の「列」、または「行」を選択するための関数なのです。
基本構文はそれぞれ、
=CHOOSECOLS(配列, 列番号1, [列番号2],[列番号3] ……)
=CHOOSEROWS(配列, 行番号1,[行番号2],[行番号3] ……)
というように記述します。
この2関数の、具体的な使用例をあげてみましょう。


たとえば、上図のようなスタッフ・リストがあった場合に、「氏名」と「週次売上」だけを抽出してグラフを作るとしましょう。
「氏名」、「週次売上」以外の項目をすべて削除してしまえば目的は達成できますが、次週以降に同じ作業をする際に、表を作りなおすところから始めなければいけません。
それでは非効率なので、元表はそのまま保存しておいて、必要な要素だけを別表に抽出して加工しなおしてみてはいかがですか?


いずれかの空白セル(1箇所)に、
=CHOOSECOLS(B2:G7,2,5)
と入力してEnterキーを押すと…


スピル機能が働いて、一瞬にして「指名」と「週次売上」だけが抽出された別表が作成されました。
※別表なので、元の表(テーブル)は無傷のまま、ちゃんと残っています。
1つの関数式+スピルで出来上がった別表をドラッグして、「おすすめグラフ」ウィザードから棒グラフを選択してあげれば、わずか数十秒で週次売上の担当者別グラフが出来上がりました。
「必要な行だけを抽出」したい場合には、CHOOSEROWS関数を使ってみましょう。
たとえば、営業の佐藤さんと、同じく営業の田中さんだけの週次売上を抽出したい場合には、空白セルに、
=CHOOSEROWS(B2:G7,2,5)
と入力してみてください。


佐藤さんと田中さんだけの週次売上レポートが、カンタンに出来あがりました。
FILTER関数との使い分けは「条件か」、それとも「セル位置か」
前章に「選択」とか「抽出」という単語がたくさん出てきましたので、Excel中上級者の方でしたら、”「選択」や「抽出」は、FILTER関数(もしくはオートフィルタ)の仕事じゃない?”と、考えたかもしれません。
おっしゃる通り!
でも、CHOOSECOLS/CHOOSEROWS関数とは使い方が違いますね。
ざっくり、相違点を整理してみましょう。


FILTER関数は、「条件」を満たすデータだけをまとめて取り出せるのが強みです。
一方、CHOOSECOLS/CHOOSEROWS関数は、条件判定ではなく、範囲内の何列目/何行目かを直接指定して抜き出します。
前章の例でも、たとえば「出席者だけに絞る」とか、「企画部だけに絞る」という場合には、FILTER関数を用いると便利です。
しかし、たとえば「営業部には5列目の”週次売上”だけを報告」する一方で、同じ資料から「総務部には6列目の”出席者”、”欠席者”欄だけを報告」というような、同一資料の切り分けをする場合には、直接列/行番号を指定できるCHOOSECOLS/CHOOSEROWS関数の方が有効なのです。
そして、”使い分け”ばかりではなく、ともにExcel標準の関数ですから、”抱き合わせ使用”で、もっと自分のイメージに近い資料を作り上げていくことができます。
前章の例を元に、ふたたび別表抽出の作業をやってみましょう。
CHOOSEROWS関数を使って、営業部員である佐藤さんと田中さんの週次売上だけを引っ張ってこようとすると、スピル機能により、2行目と5行目がすべて抽出されてしまいます。
この関数式を次のように”抱き合わせ”たらいかがですか?
=CHOOSECOLS(VSTACK(B2:G2,FILTER(B2:G7,D2:D7=”営業“)),2,5)
先にFILTER関数で”営業部員のみ”という条件での抽出を行ない、そこから2列目と5列目だけを選択する”抱き合わせ”関数式です(FILTER関数の抽出結果には見出し行を含まないため、別途VSTACK関数で見出し行だけはそのまま転記)。
“抱き合わせ”を行った結果、「特定の部署だけに絞って」「氏名と週次売上項目のみ」の抽出された別表が、ごくカンタンに作成されました。


まとめ;選択肢(行/列)が決まっている場合は、FILTER(条件抽出)ではなく、迷わずCHOOSE(選択)!
前章で対比したように、FILTER関数が「条件で絞る」のに対して、CHOOSECOLS/CHOOSEROWS関数は、「位置で選ぶ」仕様になっています。
用途に応じてこれらの関数をうまく使い分けると、資料整理がグッと効率的になります。
特に、会議資料や共有用レポートのように、全情報から限られた部分だけを見やすく整えたい場面では、「条件抽出」よりもCHOOSEブラザースによる「部分選択」の方が、目的の成果物をカンタンに手に入れられるようになりますよ。



嗚呼、人生の選択も「条件抽出」じゃなくて「部分選択」で済ませられれば、シェイクスピアだって、「楽しんでやる苦労は、苦痛を癒すものだ」なんて格言を残さなかったでしょうにねぇ!?(深いため息…)
■ 「VBA健康診断」始めます。
私たちが長年培ってきた「現場の知見」を掛け合わせ、「VBA健康診断・仕様書化パック」という新サービスを正式にリリースしました。
- 仕様書のないマクロのドキュメント化
- 隠れたバグや「2025年の崖」リスクの洗い出し
- 将来的なWebシステム化への移行ロードマップ作成
これらを、従来の常識を覆すスピードと価格で提供します。
\ まずは無料診断から /















