いまさら聞けないExcelの使い方講座

【Excel】チェックを入れた行の必要な列だけを別の表へ自動抽出するテクニック

チェックボックスONで、自動的に別表に取り出せます

チェックした項目だけを一覧にまとめる

 エクセルで一覧表を管理していると、「必要な行だけを別の表にまとめたい」と思うことがありますよね。例えば在庫管理では、発注する商品だけを一覧にして、発注書の作成に利用するようなケースです。チェックボックスを利用して発注する商品を選び、その行だけを別表に取り出せるようにしておくと便利です。

 以下の例は、事務用品の在庫一覧です。発注が必要な商品を確認し、発注するものにチェックを付ける運用を想定しています。

「在庫数」が「発注目安」を下回ったものの中から発注対象にチェックを付けます

 発注対象の行を抽出するために、並べ替えやコピー&ペーストを行う必要はありません。関数を使えば、自動的に別表にまとめることが可能です。さっそく試してみましょう。

FILTER関数でチェックした行を抽出する

 ここでは、チェックを付けた行を別のシート(発注リスト)にまとめます。FILTER関数は、セル範囲から条件に一致する行を抽出できる関数です。構文は以下の通り。

FILTER関数の構文。引数[配列]には対象のセル範囲、[含む]には[配列]から抽出する条件を指定します。[空の場合]は条件に一致するデータがない場合に表示する値を指定できます(省略可能)

 今回抽出するセル範囲は[在庫一覧]シートのセルA2~F13、条件は“チェックボックスONの行”なので、「G2:G13=TRUE」となります。見出し行はあらかじめ入力しておいてください。

=FILTER(在庫一覧!A2:F13,在庫一覧!G2:G13=TRUE)
抽出するセル範囲は[在庫一覧]シートのセルA2~F13です(①)。条件にはチェックボックスのG列を利用します(②)
[発注リスト]シートに切り替えて「=FILTER(在庫一覧!A2:F13,在庫一覧!G2:G13=TRUE)」と入力します(③)
チェックを付けた行を抽出できました

CHOOSECOLS関数で必要な列のみ取り出す

 FILTER関数を利用してチェックを付けた行のみを取り出せましたが、発注表としては「在庫数」や「発注目安」の列は不要ですよね。抽出先の表見出しを「商品ID」「商品名」「発注数」「仕入先」として、必要な情報だけに絞り込めるようにします。

 必要な列だけを取り出すには、CHOOSECOLS関数が便利。A列を「1」として、数値で取り出す列番号を指定できます。詳しくはこちらの記事も参考にしてください。

CHOOSECOLS関数の構文。引数[範囲]に指定したデータから[列番号]に指定したデータを取り出します。結果はスピルで表示されます
A列は「1」、B列は「2」、C列は「3」……となります。今回は「商品ID」「商品名」「過不足」(発注数に該当)「仕入先」が必要なので、引数[列番号]には「1,2,5,6」と指定します

 なお、「過不足」列には「=MAX(D2-C2,0)」といった数式が入力されています。発注目安から在庫数を引いて、十分な在庫数がある場合は「0」となるようにしています。マイナス表現を避ける定番の数式です。

 CHOOSECOLS関数を利用して、在庫一覧から必要な列を取り出す数式は以下の通りです。この数式では[在庫一覧]シートのセルA2~F13のうち、A,B,E,F列が取り出されます。

=CHOOSECOLS(在庫一覧!A2:F13,1,2,5,6)

 チェックが付いているかどうかは、FILTER関数で判定できるので、組み合わせた数式として以下を入力します。

=FILTER(CHOOSECOLS(在庫一覧!A2:F13,1,2,5,6),在庫一覧!G2:G13=TRUE)
見出しの「商品ID」「商品名」「発注数」「仕入先」はあらかじめ入力しておきます。セルA2に「=FILTER(CHOOSECOLS(在庫一覧!A2:F13,1,2,5,6),在庫一覧!G2:G13=TRUE)」と入力します(④)
チェックが付いた行のうち、必要な列だけを取り出せました。

 このテクニックは、本日のタスクやフォローの必要な顧客など、さまざまなリストで利用可能です。SORT/SORTBY関数と組み合わせて任意の項目で並べ替えてもいいでしょう。条件付き書式でチェックボックスのON/OFFをコントロールすれば、データを入力するだけで、自動抽出するような仕組みに応用することもできますよ。