Excelで合否判定!「全科目が基準点以上」を調べる5つの関数テクニック

Excelで合否判定!「全科目が基準点以上」を調べる5つの関数テクニック 実務の深淵

はじめに

Excelで成績表などを扱っていると、

すべての科目が基準点以上だったら合格!」みたいな判定(合否判定)をしたい時って、ありますよね!

例えば、全科目が50点以上かどうかをチェックする、なんていう場面。

もちろん、普通にIF関数とAND関数を組み合わせれば、すぐに実現できます。

でも…。

なんだか無性に他の方法も試してみたくなる時って、ありませんか?

このシンプルな条件判定、もっと違うアプローチはないだろうか…?
関数をいじくり回したら、どんな数式が生まれるんだろう…?

そんなあなたに贈る、今回の暇つぶし企画!

今回のテーマ:合否判定

今回のテーマは、

「名前と各科目の点数が入力されたリストから、全科目が50点以上なら1そうでなければ0と表示する」

というものです。

え、普通にIFANDで良いのでは…?

はい、実務ではそれが一番分かりやすいことが多いです!(笑)

でも、今回はあえて色々な関数を使って、しかも少しマニアックな方法も含めて挑戦してみるのが醍醐味。

目的

今回の目的は、

Excel関数の様々な使い方や、数式の組み立て方の引き出しを増やすこと!」です。

「こんな短い数式でできるんだ!」
「この関数、こんな判定にも使えるのか!」

こうした発見を通して、あなたのExcel関数に対する見方が、ちょっぴり変わる…かもしれませんよ?

もちろん、中には「え、こんな書き方する人いる?」なんて思う方法も登場します(笑)

ですが、一つのことを複数のアプローチで実現できると知っておくことは、
問題解決の際の思考の柔軟性や、応用力につながるはずです。

さあ、まずはExcelシートを用意して、今回も関数パズルの世界を覗いてみましょう!

今回のミッション

本記事では、Excel 2021を使用して検証および数式の作成を行っています。

現在の状態とゴール

まず、現在の状態を確認しましょう。

A列に名前(8人分)、B列からF列にかけて、国語、算数、理科、社会、英語の点数がそれぞれ入力されているシートを想定します。

Excelの説明画像

次に、目指すゴールです。

この表の右側(H列以降)に、関数だけを使って合否判定結果を表示させます。

具体的には、
各生徒のすべての科目が50点以上であれば1」、
そうでなければ0」と表示させます。

ルール

今回の挑戦にも、いくつかルールがあります。

  • 関数縛り: 使用するのはExcelの「関数」のみ!VBA(マクロ)は使いません。
  • バージョン: Excel 2021 で利用可能な関数を使用します。(筆者の環境に合わせます!)
  • 見やすさ重視: 数式の分かりやすさや結果の見やすさも、少しだけ意識してみましょう!

データの準備

まず、お手元のExcelで、簡単な成績表のようなデータを作成してみてください。

A列に名前、B列からF列に各科目の点数を入力します。
点数は自由に変更していただいて構いません。

または以下からサンプルデータ excel_de_himatsubushi018.xlsx(12KB)をダウンロードします。

準備はいいですか?

それでは、頭の体操、スタートです!

方法1:誰が見ても分かりやすい! IFとANDの王道コンボ

考えかた

はじめに、最もスタンダードで、誰が見ても理解しやすい方法からご紹介します。

条件判定といえばIF関数ですね。
そして、複数の条件をすべて満たすかチェックするならAND関数です。

この二つを組み合わせるのが、まさに王道と言えるでしょう。

具体的な考え方はとてもシンプルです。

「もし(IF)、国語が50点以上 かつ(AND) 算数が50点以上 かつ 理科が50点以上 かつ 社会が50点以上 かつ 英語が50点以上 ならば 1 を、そうでなければ 0 を表示する」という合否判定になります。

手順

数式入力

まず、H2セルに以下の数式を入力します。

=IF(AND(B2>=50, C2>=50, D2>=50, E2>=50, F2>=50), 1, 0)

Excelの説明画像

コピー

次に、Enterキーで確定した後、
下方向にドラッグして、H9セルまで数式をコピーします。

Excelの説明画像

解説

この数式のポイントは非常にシンプルです。

ここで使われている主な関数について見ていきましょう。

AND関数について

AND関数は、AND(条件1, 条件2, …) の形で使います。

指定したすべての条件TRUE(真)の場合にTRUEを返します。

Excelの説明画像
Excelの説明画像

今回は、B2からF2までの各セルが50以上であるか、という5つの条件を指定しています。

IF関数について

IF関数は、IF(論理式, 真の場合, 偽の場合) の形で使います。

まず、AND関数の結果(すべての科目が50点以上ならTRUE、そうでなければFALSE)を「論理式」として受け取ります。

そして、TRUEなら「真の場合」の値である 1 を、FALSEなら「偽の場合」の値である 0 を返します。

Excelの説明画像

メリット&デメリット

  • メリット:
    • 数式の意味が非常に分かりやすい。
    • Excelの基本的な関数なので、ほとんどのバージョンで使える。
  • デメリット:
    • 条件(科目数)が増えると、AND関数の中身が長くなる。

方法2:とにかく短く! AND関数の配列処理マジック

考えかた

方法1は分かりやすいですが、ちょっと数式が長いな…と感じた方、いませんか?

そこで、もっとコンパクトに書く方法をご紹介します。

ここでは、AND関数のちょっとした応用テクニックを使います。

実は、AND関数は引数にセル範囲を直接指定することもできます。

=AND(B2:F2>=50)

このように書くと、B2からF2の各セルが50以上かどうかを判定した結果(TRUE/FALSEの配列)を内部で処理してくれます。

Excelの説明画像

重要なのは、すべての結果がTRUEの場合のみ、AND関数はTRUEを返すという点です。

Excelの説明画像

さらに、ExcelではTRUEは計算上「1」、FALSEは「0」として扱われます。

Excelの説明画像

この性質を利用します。

AND関数の結果(TRUE/FALSE)に *1 を掛けてあげることで、
TRUEなら1、FALSEなら0という数値に変換してしまおう!という考え方です。

手順

数式入力

まず、I2セルに以下の数式を入力します。

=AND(B2:F2>=50)*1

Excelの説明画像

コピー

次に、H列と同様に、I2セルからI9セルまで数式をコピーします。

Excelの説明画像

解説

この短い数式のポイントは主に2つです。

AND関数の配列処理

まず、AND(B2:F2>=50) 部分で、B2からF2の範囲にあるすべてのセルが50以上であるかを一括で判定します。

一つでも50未満があれば、AND関数はFALSEを返します。

*1 による数値化

次に、AND関数の結果はTRUEまたはFALSEです。

Excelの説明画像

これに *1 を掛けることで、TRUE * 1 = 1FALSE * 1 = 0 となります。

これにより、目的の数値(10)を得ることができます。

IF関数を使わずに済むのがポイントですね!

メリット&デメリット

  • メリット:
    • 数式が非常に短い!
    • 科目数が増えても、範囲指定(例: B2:F2)を変えるだけで対応可能。
  • デメリット:
    • *1 の意味を知らないと、少し戸惑うかもしれない。
    • (稀ですが)AND関数が配列を引数に取る挙動は、古いバージョンでは意図通りに動かない可能性もゼロではありません。(Excel 2021では問題ありません)

方法3:発想の転換? 最小値を使ってみる!

考えかた

さて、ここからは少し違う角度からのアプローチです。

すべての科目が50点以上」ということは、言い換えることができます。

つまり、「点数の中で一番低い点数が50点以上」である、とも考えられますよね?

もし最低点50点未満なら、
その時点で「すべての科目が50点以上」という条件は満たせません。

この考え方を利用するのが、MIN関数です!

まず、MIN関数で指定した範囲(各科目の点数)の最小値を求めます。

Excelの説明画像

次に、その最小値が50以上かどうかを比較演算子 >= で判定します。

結果はTRUEまたはFALSEになりますね。

これを数値の1または0に変換する必要があるのですが、
ここで *1 の代わりにN関数を使ってみましょう!

N関数は、引数がTRUEなら1FALSEなら0、数値ならその数値を、それ以外なら0を返すという、ちょっと面白い関数です。

これを使えば、TRUE/FALSEをスマートに1/0に変換できます。

手順

数式入力

まず、J2セルに以下の数式を入力します。

=N(MIN(B2:F2)>=50)

Excelの説明画像

コピー

次に、H列、I列と同様に、J2セルからJ9セルまで数式をコピーします。

解説

この数式の流れを見ていきましょう。

MIN関数による最小値の計算

まず、MIN(B2:F2) で、B2からF2の範囲にある点数の最小値を計算します。

例えば、ある行の点数が「88, 85, 95, 76, 38」なら、最小値は38です。

Excelの説明画像

別の行が「53, 81, 96, 60, 89」なら、最小値は53です。

比較演算による判定

次に、MIN(…)>=50 で、計算された最小値が50以上であるかを判定します。

Excelの説明画像

最小値が38ならFALSE、最小値が53ならTRUEとなります。

Excelの説明画像

N関数による数値化

最後に、N(…) で、比較演算の結果(TRUEまたはFALSE)を数値に変換します。

FALSEなら0TRUEなら1が返されます。

Excelの説明画像

メリット&デメリット

  • メリット:
    • 「最小値」という異なる視点からのアプローチで面白い。
    • 数式が比較的短く、理解しやすい。
    • N関数という、少しマイナー?な関数の使い方も学べる。
  • デメリット:
    • MIN関数の計算が入るため、超大量データではAND関数よりほんのわずかに計算負荷が高い…かもしれません。(通常は気にするレベルではありません)

方法4:一撃必殺!? 配列数式でまとめてドン!

考えかた

これまでの方法は下にコピーする必要がありましたが、
Excel 2021以降の「スピル」で一気に表示させたいですよね!

そこで、行列計算を使った少し高度な方法に挑戦です。

使うのはMMULT関数、TRANSPOSE関数、COLUMN関数。

なんで行列?

と思いますよね?考え方はこうです。

まず、各科目が50点以上なら1、そうでなければ0という行列を作ります。(N関数を使います)

次に、この行ごとの「1の数(=50点以上の科目数)」を数えたい。

ここでMMULT関数の出番!

うまく行列を組み合わせる(TRANSPOSECOLUMNで補助的な行列を作ります)ことで、
行ごとの合計を一気に計算できるんです。

最後に、その合計が科目数の「5」に等しいかを判定し、結果をN関数で10に変換します。

ちょっと複雑に見えますが、
これで一つのセルに数式を入れるだけで、スピル機能が結果をズラッと表示してくれますよ!

MMULT関数については、Excel MMULT関数で合計・順位・平均を出す7つの方法 でも紹介しています!

手順

数式入力

まず、K2セルに以下の数式を1つだけ入力します。

=N(MMULT(N(B2:F9>=50),TRANSPOSE(COLUMN(B2:F2)^0))=5)

Enterキーを押すと、結果がK2からK9まで自動的に表示されます。(スピル)

Excelの説明画像

注意: MMULT関数に渡す最初の行列は、データ全体の範囲 B2:F9 を指定する必要があります。

解説

さあ、この難解に見える数式も分解してみましょう!

ここでは、数式の主要部分をステップごとに解説します。

N(B2:F9>=50) による1/0行列の作成

まず、B2からF9までの全データ範囲に対して、各点数が50以上かを判定します。

これにより、TRUE/FALSEの行列が作成されます。

Excelの説明画像

次に、N関数でこれを1/0の行列8行×5列)に変換します。

Excelの説明画像

TRANSPOSE(COLUMN(B2:F2)^0) による縦行列の作成

次に、掛け合わせるための縦行列を作ります。

COLUMN(B2:F2) は、B2からF2の列番号 {2, 3, 4, 5, 6} を配列で返します。

Excelの説明画像

どの行のCOLUMNを使っても、列番号の配列が得られればOKです

続いて ^0各要素を0乗します。

Excelの説明画像

どんな数値も0乗すると1になるので、{1, 1, 1, 1, 1} という配列になります。

最後に、TRANSPOSE(…) でこの横一列の配列を、縦一列の配列(5行×1列)に変換します。

Excelの説明画像

MMULT関数による行ごと合計の計算

そして、MMULT(行列1, 行列2) です。

先ほど作成した1/0の行列(8行×5列)と、すべて1の縦行列(5行×1列)の積を計算します。

Excelの説明画像

これにより、元の行列の各行の合計値(つまり、各生徒の50点以上の科目数)が配列(8行×1列)として得られます。

最終判定とN関数による数値化

次に、…=5 で、MMULTの結果(科目数の配列)が、5(全科目数)と等しいかどうかを判定します。

Excelの説明画像

結果はTRUE/FALSEの配列になります。

最後に、このTRUE/FALSEの配列をN関数で1/0配列に変換して、完成です!

Excelの説明画像

メリット&デメリット

  • メリット:
    • 1つのセルに数式を入れるだけで、全結果が自動表示される(スピル)。
    • MMULT関数など、普段あまり使わないかもしれない関数の強力な使い方を学べる。
  • デメリット:
    • 数式が非常に複雑で、理解するのが難しい。
    • MMULT関数は、行列のサイズ(行数・列数)が一致しないとエラーになるなど、扱いに注意が必要。
    • Excel 2021以降 / Microsoft 365 でないとスピル機能が使えません。

旧バージョンでは配列数式としてCtrl+Shift+Enterで入力する必要があり、挙動が異なります。

方法5:分かりやすさ重視! セル範囲に名前を付ける

考えかた

方法1は分かりやすいですが、数式が長くなるのが欠点でした。

また、方法2は短いですが、B2:F2>=50が何を意味するのか、
少し分かりにくいかもしれません。

そこで、もっと数式を「自然言語」に近づけて、
分かりやすくする方法はないでしょうか?

ここでは、「名前の定義」機能を使ってみましょう!

あらかじめ、各科目の点数が入っている列範囲(例えばB2:B9)に「国語」という名前を付けます。。

同様にC2:C9に「算数」…といったように名前を付けておきます。

すると、数式の中でセル参照(B2など)の代わりに、定義した名前(国語など)が使えるようになります。

Excelの説明画像

これを使えば、数式は「国語が50点以上 かつ 算数が50点以上 かつ 理科が50点以上 かつ 社会が50点以上 かつ 英語が50点以上」という条件を、ほぼそのまま数式で表現できます。

今回は、AND関数の代わりに、掛け算 * を使ってみましょう。

したがって、「(国語>=50)*(算数>=50)*…」 と書くことで、すべての条件がTRUE(つまり1)の場合のみ、結果が1になります。

一つでもFALSE(つまり0)があれば、掛け算の結果は0になります。

手順

名前の定義

まず、名前を定義します。

  • はじめに、B2:B9セルを選択します。
  • 次に、数式バーの左にある「名前ボックス」に「国語」と入力し、Enterキーを押します。
  • 続いて、同様に、C2:C9を選択して「算数」、D2:D9を選択して「理科」、E2:E9を選択して「社会」、F2:F9を選択して「英語」と、それぞれ名前を定義します。
Excelの説明画像

範囲の選択は、タイトル行を含めずデータ部分のみで行います。

※ または、「数式」タブの「選択範囲から作成」機能を使うと、より簡単に名前を定義できます。

Excelの説明画像

B1:F9(タイトル行を含む)を選択し、「数式」タブ > 「定義された名前」グループ > 「選択範囲から作成」をクリックします。

上端行」にチェックを入れてOKします。

Excelの説明画像

数式入力

次に、L2セルに以下の数式を入力します。

=(国語>=50)*(算数>=50)*(理科>=50)*(社会>=50)*(英語>=50)

Excelの説明画像

Enterキーを押すと、結果がL2からL9まで自動的に表示されます。(スピル)

Excelの説明画像

解説

この方法のポイントは「名前の定義」にあります。

主な特徴を2点解説します。

名前の定義による可読性向上

セル範囲に分かりやすい名前を付けることで、数式の可読性が劇的に向上します。

B2C2といったセル参照ではなく、
国語」「算数」という名前で直接データにアクセスできます。

そのため、数式が何を計算しているのかが直感的に理解しやすくなります。

論理値の掛け算によるAND演算

(条件1)*(条件2)*… という形式は、AND(条件1, 条件2, …) と同じ意味を持ちます。

各条件がTRUE(1)かFALSE(0)かを判定し、それらをすべて掛け合わせます。

一つでもFALSE(0)があれば結果は0に、すべてTRUE(1)の場合のみ結果が1になります。

メリット&デメリット

  • メリット:
    • 数式が非常に分かりやすく、自然言語に近い感覚で読める。
    • 名前を定義しておけば、他の数式でも使い回せる。
  • デメリット:
    • 事前に名前を定義する手間がかかる。
    • 定義した名前が多くなると管理が少し大変になる場合がある。
    • 他の人がファイルを見たときに、名前が定義されていることを知らないと、
      数式の意味が分からない可能性がある。

参考:今回登場したExcel関数

今回の暇つぶしで活躍した関数たちを、改めてご紹介します。

  • IF(論理式, 真の場合, [偽の場合]): 条件に基づいて異なる値を返す、おなじみの関数。
  • AND(論理式1, [論理式2], …): すべての引数がTRUEのときにTRUEを返します。配列や範囲を引数に取ることも可能。
  • MIN(数値1, [数値2], …): 引数リストの中の最小値を返す。
  • N(値): 値を数値に変換します。TRUE1FALSE0になる。
  • MMULT(配列1, 配列2): 2つの配列(行列)の積を返します。配列数式で強力な計算を実現できる。
  • TRANSPOSE(配列): 配列のを入れ替える。
  • COLUMN([参照]): 参照先の列番号を返します。配列数式内で使うと列番号の配列を生成できる。
  • (名前の定義): 関数ではありませんが、セル範囲に名前を付ける機能。数式の可読性を高めるのに役立つ。

普段あまり組み合わせない関数も、こうしてみると意外な活躍を見せてくれますね!

まとめ

今回は、「すべての科目が50点以上かどうかを判定する」というシンプルな課題に対して、
関数だけで挑む5つの方法をご紹介しました!

まず、王道のIF関数とAND関数を使った方法。

次に、AND関数の配列処理と*1で短縮する方法。

さらに、発想を変えてMIN関数で最小値を見る方法や、
MMULT関数を使った少し難解な配列数式での一括処理もありました。

最後に、名前定義で可読性を上げる方法まで、様々なアプローチを見ましたね。

正直、実務でパッと使うなら、方法1のIF/ANDか、方法2の短いAND数式、あるいは分かりやすさ重視なら方法5あたりが現実的でしょう。

方法4のMMULTは、少しマニアックかもしれませんね(笑)

でも、こうやって「普通ならこうするけど、あえて違うやり方はないかな?」と考えてみること。

そして「この関数、こんな使い方もできるんだ!」と発見することは、
Excelの関数への理解を深めることにつながります。

これは、応用力を養う上でとても大切だと思います。

一つの条件判定にも、これだけのバリエーションがある。
その引き出しの多さが、いざという時にきっと役立つはずです。

今回の関数パズルが、皆さんのExcelライフのちょっとした刺激や、
新しい発見につながっていれば嬉しいです!

タイトルとURLをコピーしました