Level3 関数|クエスト11

条件に合う件数を数え、その結果に応じて必要なデータを取り出す処理を、1つの数式でできますか?
Excelでは、役割の異なる関数を組み合わせると、1つの関数だけではできない処理を1つの数式で実行できます。
たとえば、COUNTIFS関数で未処理の注文件数を数え、IF関数で未処理の注文があるかを判定できます。さらに、未処理の注文がある場合だけVLOOKUP関数で商品名を取り出すことも可能です。
複数の関数を組み合わせた数式は長くなりますが、それぞれの関数に役割を分け、簡単な数式から段階的に組み立てれば理解しやすくなります。
この記事では、COUNTIFS関数で条件に一致する件数を数え、IF関数で結果を判定し、VLOOKUP関数で対応する商品名を取り出す方法を順番に確認します。
各関数の基本的な使い方は関連記事で確認できるため、今回は書式や入力方法を繰り返さず、複数の関数を1つの数式へ組み合わせる考え方を身につけましょう。
IF・COUNTIFS・VLOOKUP関数の役割を分けて考え、複数の関数を1つの数式へ組み合わせられるようになることです。
Excel関数を組み合わせるとは
Excelでは、ある関数の引数に別の関数を指定することで、複数の関数を1つの数式へ組み合わせられます。
それぞれの関数に異なる役割を持たせると、1つの関数だけではできない処理も自動化できます。
たとえば、この記事では次の3つの処理を行います。
- 未処理の注文件数を数える
- 未処理の注文があるか判定する
- 未処理の注文がある場合に商品名を取り出す
この3つの処理を、それぞれCOUNTIFS関数・IF関数・VLOOKUP関数に担当させます。
3つの関数の役割を確認する
今回使用する関数の役割は、次のとおりです。
COUNTIFS関数:複数の条件に一致する件数を数える
IF関数:条件を満たす場合と満たさない場合で結果を変える
VLOOKUP関数:検索値に対応するデータを表から取り出す
今回の例では、最初にCOUNTIFS関数で未処理の注文件数を数えます。
次に、COUNTIFS関数の結果が1件以上かどうかをIF関数で判定します。
未処理の注文がある場合は、VLOOKUP関数で商品番号に対応する商品名を取り出します。
COUNTIFS関数で件数を数える
↓
IF関数で件数を判定する
↓
VLOOKUP関数で商品名を取り出す
複数の関数を組み合わせた数式は長く見えますが、処理を分けて考えると、それぞれの関数が何をしているのか理解しやすくなります。
各関数の基本を確認したい場合
この記事では、関数を組み合わせる方法に集中するため、各関数の書式や基本的な入力方法は繰り返しません。
基本から確認したい場合は、次の記事をご覧ください。
長い数式を最初から作らない
複数の関数を組み合わせるときは、それぞれの関数を単独で確認してから1つの数式へまとめます。
まずは、それぞれの関数を単独で入力し、正しい結果が表示されるか確認します。
そのあとで、確認した関数を1つの数式へ組み合わせます。
複数の関数を組み合わせる場合は、完成した長い数式を最初から入力しません。
それぞれの関数が正しい結果になることを確認してから、1つの数式へまとめましょう。
次は、IF・COUNTIFS・VLOOKUP関数を組み合わせて、どのような処理を行うのか確認します。
IF・COUNTIFS・VLOOKUP関数を組み合わせる
今回は、確認する商品番号に未処理の注文があるかを調べ、結果に応じて表示を変えます。
表示する結果は、次のとおりです。
未処理の注文がある場合
→商品番号に対応する商品名を表示する
未処理の注文がない場合
→「未処理なし」と表示する
使用する表を確認する
次の2つの表と確認欄を使用します。

F3セルへ確認する商品番号を入力すると、G3セルに商品名または「未処理なし」と表示される仕組みを作ります。
完成する数式
G3セルへ入力する完成形は、次の数式です。
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
COUNTIFS(B:B,F3,C:C,"未処理")>0
→F3セルの商品番号に未処理の注文が1件以上あるか確認する
VLOOKUP(F3,H:I,2,0)
→商品番号に対応する商品名を商品一覧から取り出す
"未処理なし"
→未処理の注文がない場合に表示する
数式だけを見ると長く感じますが、3つの処理に分けると仕組みを理解しやすくなります。
IF関数は、COUNTIFS関数の結果に応じて、次のどちらを表示するかを決めています。
条件を満たす場合
→VLOOKUP関数で取り出した商品名
条件を満たさない場合
→「未処理なし」
次は、COUNTIFS関数で未処理の注文件数を数えるところから、3つの関数を段階的に組み合わせます。
3つの関数を段階的に組み合わせる
複数の関数を組み合わせるときは、完成した数式を一度に作るのではなく、それぞれの関数が正しく動作することを順番に確認します。
今回は、次の流れで数式を完成させます。
- COUNTIFS関数で未処理の注文件数を数える
- IF関数で未処理の注文があるか判定する
- VLOOKUP関数で商品名を取り出す
COUNTIFS関数で未処理の注文を数える
最初に、F3セルの商品番号と一致し、処理状況が「未処理」になっている注文の件数を数えます。
確認用のセルへ、次の数式を入力します。

=COUNTIFS(B:B,F3,C:C,"未処理")
B:B,F3
→B列の商品番号がF3セルの商品番号と一致する
C:C,"未処理"
→C列の処理状況が「未処理」と一致する
COUNTIFS関数は、2つの条件をどちらも満たす注文の件数を数えます。
F3セルの商品番号に対応する未処理の注文件数が表示されれば、正しく計算できています。
IF関数で未処理の注文があるか判定する
次に、COUNTIFS関数で数えた件数が1件以上あるかをIF関数で判定します。
確認用のセルへ、次の数式を入力します。

=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,"未処理あり","未処理なし")
条件:COUNTIFS関数で数えた件数が0より大きい
条件を満たす場合
→「未処理あり」と表示する
条件を満たさない場合
→「未処理なし」と表示する
COUNTIFS関数の結果が「0より大きい」場合は、未処理の注文が1件以上あることを表します。
未処理の注文がある場合は「未処理あり」、1件もない場合は「未処理なし」と表示されます。
VLOOKUP関数で商品名を取り出す
最後に、未処理の注文がある場合に表示していた「未処理あり」を、VLOOKUP関数へ置き換えます。
変更前の数式
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,"未処理あり","未処理なし")
条件を満たした場合に「未処理あり」と表示する処理を「VLOOKUP(F3,H:I,2,0)の検索処理」に変更します。

変更後の数式
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
COUNTIFS(B:B,F3,C:C,"未処理")>0
→F3セルの商品番号に未処理の注文が1件以上あるか確認する
VLOOKUP(F3,H:I,2,0)
→F3セルの商品番号に対応する商品名を取り出す
"未処理なし"
→未処理の注文がない場合に表示する
IF関数の条件を満たす場合へ、次のVLOOKUP関数を指定しています。
そのため、完成した数式では次の結果が表示されます。
未処理の注文がある場合
→商品番号に対応する商品名
未処理の注文がない場合
→「未処理なし」
未処理の注文がある場合はF3セルの商品番号に対応する商品名、未処理の注文がない場合は「未処理なし」と表示されれば、正しく組み合わせられています。
このように、COUNTIFS関数だけの数式から始め、IF関数とVLOOKUP関数を順番に追加すると、長い数式でも役割を確認しながら組み立てられます。
次は、完成した数式を入力する手順と、計算結果の確認方法を説明します。
組み合わせた数式を入力して結果を確認する
ここまで段階的に確認したCOUNTIFS関数・IF関数・VLOOKUP関数を、1つの数式へまとめます。
G3セルへ入力する数式は、次のとおりです。
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
組み合わせた数式を入力する
次の手順で、G3セルへ数式を入力します。
- 結果を表示するG3セルを選択する
- キーボードで「
=IF(COUNTIFS(」まで入力する - B列をマウスで選択する
- キーボードで「
,」を入力する - 検索する商品番号が入力されたF3セルをマウスで選択する
- キーボードで「
,」を入力する - C列をマウスで選択する
- キーボードで「
,"未処理")>0,VLOOKUP(」を入力する - F3セルをマウスで選択する
- キーボードで「
,」を入力する - H列からI列までをマウスで選択する
- キーボードで「
,2,0),"未処理なし")」を入力する - Enterキーを押して数式を確定する
数式が長いため、一度にすべて入力しようとせず、COUNTIFS関数、VLOOKUP関数、IF関数の文字列の順に区切って入力すると、数式を組み立てやすくなります。
計算結果を確認する
Enterキーを押すと、F3セルの商品番号と未処理の注文件数に応じて、G3セルの表示が変わります。
複数の商品番号を確認する場合は、商品番号を下のセルへ入力し、G3セルの数式をオートフィルして結果を確認できます。

未処理の注文がある場合は商品名、未処理の注文がない場合は「未処理なし」と表示されれば、正しく計算できています。
関数の結果を別のセルへ表示して組み合わせる
複数の関数は、必ず1つの長い数式へまとめる必要はありません。
それぞれの関数の結果を別のセルへ表示し、計算結果が表示されたセルを次の数式から参照する方法もあります。
関数ごとの結果をセルで確認できるため、数式の仕組みが分かりやすく、間違いが発生した場所も見つけやすくなります。
セル参照を利用して関数を単純にする方法
ここからは、途中の計算結果を表示する列を追加するため、表の配置を変更します。
E3セルへ確認する商品番号を入力し、F3セルへ未処理件数、G3セルへ商品名、H3セルへ最終結果を表示します。

F3セルへ未処理の注文件数を表示します。
=COUNTIFS(B:B,E3,C:C,"未処理")
G3セルにE3セルの商品番号に対応する商品名を表示します。
=VLOOKUP(E3,I:J,2,0)
COUNTIFS関数とVLOOKUP関数の結果を別セルへ表示したら、セルを参照しながらH3セルで条件分岐を設定します。
=IF(F3>0,G3,"未処理なし")
F3セル:未処理の注文件数を表示する
=COUNTIFS(B:B,E3,C:C,”未処理”)
G3セル:商品番号に対応する商品名を表示する
=VLOOKUP(E3,I:J,2,0)
H3セル:条件分岐
=IF(F3>0,G3,”未処理なし”)
1つの数式へまとめた場合と、セルを分けた場合の最終的な結果は同じです。
セルを分けると数式を確認しやすい
1つにまとめた数式
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
セル参照を利用した数式
=IF(F3>0,G3,"未処理なし")
セルを分ける方法では、未処理件数と商品名がシート上に表示されます。
そのため、最終結果が正しくない場合も、エラー原因を特定しやすくなります。
なぜなら各関数ごとに計算結果が分かるので、どの関数が機能していないか判断しやすくなるからです。
複数の関数を1つの数式へまとめると、数式が長くなり、間違いを見つけにくくなる場合があります。
数式が分かりにくい場合は、関数ごとの結果を別のセルへ表示し、そのセルを参照して次の処理を行いましょう。
関数を1つの数式へまとめることより、計算の仕組みを確認しやすい形にすることが大切です。
日常の作業では表示する必要がない計算用の列は、列のグループ化を使うと、必要なときだけ表示できます。
詳細は「Excelで行・列をグループ化する方法は?折りたたみ・展開・解除手順を解説」をご覧ください。
どちらの方法を使うか
まとめる方法が向いている場合
- 数式が短い
- 処理の仕組みを理解できている
- 計算用の列を増やしたくない
セルを分ける方法が向いている場合
- 組み合わせる関数が多い
- 途中の計算結果を確認したい
- 数式の修正や引き継ぎをしやすくしたい
- 長い数式にすると仕組みが分かりにくい
セルを分ける方法を「未完成」と考える必要はありません。実務では、確認や修正のしやすさを優先して、途中結果を別セルへ表示する方法も有効です。
次は、組み合わせた数式でエラーが発生した場合に、関数ごとに確認する方法を説明します。
組み合わせた数式を確認・修正する
複数の関数を組み合わせた数式でエラーが発生した場合は、完成した数式を何度も入力し直すのではなく、関数ごとに分けて結果を確認します。
今回の数式では、COUNTIFS関数、VLOOKUP関数、IF関数の順番で確認しましょう。
内側の関数から順番に確認する
最初に、COUNTIFS関数だけを別のセルへ入力します。
=COUNTIFS(B:B,F3,C:C,"未処理")
未処理の注文件数が正しく表示される場合は、COUNTIFS関数に問題はありません。
次に、VLOOKUP関数だけを別のセルへ入力します。
=VLOOKUP(F3,H:I,2,0)
F3セルの商品番号に対応する商品名が表示される場合は、VLOOKUP関数に問題はありません。
2つの関数が正しく動作することを確認したら、IF関数へ組み合わせます。
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
長い数式でエラーが発生した場合は、内側の関数から順番に結果を確認します。
組み合わせた数式でエラーが表示された場合は、完成した数式を最初から入力し直すのではなく、それぞれの関数を単独で確認します。
各関数が正しい結果を返すことを確認してから、1つの数式へまとめましょう。
次は、今回とは異なる関数の組み合わせ例を確認します。
ほかの関数を組み合わせた実務例
Excelでは、今回使用したIF・COUNTIFS・VLOOKUP関数以外にも、目的に合わせてさまざまな関数を組み合わせられます。
ここでは、代表的な3つの組み合わせを確認します。
IF・AND・OR関数で複数条件を判定する
複数の条件をすべて満たす場合や、いずれかの条件を満たす場合に結果を変えたいときは、IF関数とAND関数・OR関数を組み合わせます。
また、IF関数の中へ別のIF関数を入れると、条件に応じて結果を3つ以上に分けられます。
- すべての条件を満たす場合に結果を変える
- いずれかの条件を満たす場合に結果を変える
- 条件に応じて結果を3つ以上に分ける
詳しい方法は、次の記事をご覧ください。
MID・FIND・LEN関数で文字列の一部を取り出す
取り出す文字の位置や文字数が決まっていない場合は、MID・FIND・LEN関数を組み合わせます。
FIND関数で区切り記号などの位置を調べ、その位置に合わせてMID関数で必要な文字列を取り出します。LEN関数を組み合わせると、文字列全体の長さに応じて取り出す文字数を調整できます。
文字数や区切り位置が異なる文字列から、必要な部分を取り出す
詳しい方法は、次の記事をご覧ください。
VLOOKUP関数とIFERROR関数でエラー表示を変える
VLOOKUP関数で検索値が見つからない場合は、「#N/A」エラーが表示されます。
VLOOKUP関数とIFERROR関数を組み合わせると、エラーの代わりに空白や「未登録」などの文字を表示できます。
検索値が見つからない場合に、エラーではなく空白や任意の文字を表示する
詳しい方法は、次の記事をご覧ください。
これらの記事でも、複数の関数に異なる役割を持たせ、1つの数式へ組み合わせています。
複数の関数を使うときは、最初に必要な処理を分け、それぞれの役割に合った関数を選びましょう。
次は、この記事で学んだ関数の組み合わせ方を整理し、まとめへ進みます。
まとめ|関数の役割を分けて組み合わせよう
複数の関数を組み合わせると、1つの関数だけではできない処理を、1つの数式で実行できます。
今回作成した数式は、次のとおりです。
=IF(COUNTIFS(B:B,F3,C:C,"未処理")>0,VLOOKUP(F3,H:I,2,0),"未処理なし")
この数式では、3つの関数に異なる役割を持たせています。
- COUNTIFS関数:未処理の注文件数を数える
- IF関数:未処理の注文があるかを判定する
- VLOOKUP関数:商品番号に対応する商品名を取り出す
長い数式を最初から作るのではなく、COUNTIFS関数、IF関数、VLOOKUP関数の順番で段階的に組み合わせると、それぞれの役割を確認しながら作成できます。
また、複数の関数は、必ず1つの数式へまとめる必要はありません。途中の計算結果を別のセルへ表示し、そのセルを次の数式から参照する方法もあります。
計算のためだけに使用する列はグループ化し、必要なときだけ表示すると、表を見やすく保ちながら計算内容も確認できます。
- 複数の関数を組み合わせる前に、それぞれの役割を決める
- 簡単な数式から段階的に関数を追加する
- COUNTIFS関数で複数の条件に一致する件数を数える
- IF関数で件数に応じて処理を変える
- VLOOKUP関数で対応するデータを表から取り出す
- 数式が長くなる場合は、関数の結果を別のセルへ表示してもよい
- 計算用の列はグループ化すると表示と非表示を切り替えやすい
- エラーが発生した場合は、関数ごとに分けて結果を確認する
関数を組み合わせるときは、必要な処理を分け、それぞれの役割に合った関数を使用しましょう。
Level3の試練へ進む
クエスト11までに、Excel関数を使って、計算や判定、検索などの処理を自動化する方法を学びました。
SUM・COUNT・IF・SUMIFS・COUNTIFS・MID・日付関数・VLOOKUP・TEXTなどを使うことで、数値や条件が変わっても、数式によって結果を自動で更新できます。
さらに、複数の処理が必要な場合は、関数ごとの役割を分け、複数の関数を組み合わせる方法も確認しました。
次は、Level3で学んだ関数を目的に合わせて選び、数式を組み立てられるか、Level3の試練で確認しましょう。
関数の書式を一つずつ暗記するのではなく、何を計算・判定・検索したいのかを考え、必要な処理に合った関数を選ぶことが大切です。
Level3の関数を目的に合わせて使えるようになったら、試練に挑戦して次のLevelへ進みましょう。
Level3の学習内容をもう一度確認したい方は、Level3攻略フローをご覧ください。


コメント