Excelの数式を見ていると、=SUMPRODUCT(–NOT(ISERROR(A1:C1)))のように、関数の前に「–」という記号が付いていることがあります。この記号は一見すると不要に見えますが、Excel関数では重要な役割を持つテクニックです。この記事では、「–」が何をしているのか、なぜSUMPRODUCT関数と組み合わせて使われるのかを、具体例を交えながら解説します。
Excel数式に登場する「–」はダブルマイナス演算子
Excelの数式で使われる「–」は、正式には「ダブルマイナス演算子」や「二重否定」と呼ばれることがあります。これは、値の前にマイナス記号を2回付けることで、Excelに値を数値として認識させるための記述です。
例えば、=–TRUEという数式を入力すると結果は1になります。また、=–FALSEの場合は0になります。
つまり「–」は、TRUEやFALSEなどの論理値を、計算に利用できる数値の1と0へ変換する役割を持っています。
なぜNOT関数の結果に「–」を付けるのか
質問の数式である=SUMPRODUCT(–NOT(ISERROR(A1:C1)))を分解すると、それぞれの役割が分かります。
| 部分 | 役割 |
|---|---|
| ISERROR(A1:C1) | セルがエラーかどうかを判定する |
| NOT(…) | 判定結果を反転する |
| — | TRUE/FALSEを1/0へ変換する |
| SUMPRODUCT | 配列の数値を合計する |
ISERROR関数は、セルがエラーの場合にTRUE、エラーではない場合にFALSEを返します。その結果をNOT関数で反転すると、エラーではないセルがTRUEになります。
しかし、SUMPRODUCT関数で個数を数えるためにはTRUEやFALSEのままでは扱いにくいため、「–」を使ってTRUEを1、FALSEを0へ変換しています。
具体例で見る「–」による変換の仕組み
例えば、A1:C1に次のようなデータが入っている場合を考えます。
| A1 | B1 | C1 |
|---|---|---|
| 100 | #N/A | 200 |
ISERROR(A1:C1)を実行すると、結果は「FALSE、TRUE、FALSE」になります。これはB1だけがエラーだからです。
そこにNOTを付けると「TRUE、FALSE、TRUE」になります。これは「エラーではないセル」を表しています。
さらに–を付けることで「1、0、1」という数値になり、SUMPRODUCTが合計できる形になります。その結果、エラーではないセルの数である2が求められます。
SUMPRODUCT関数と「–」がよく組み合わせられる理由
SUMPRODUCT関数は、本来は複数の配列を掛け合わせて合計するための関数ですが、条件に一致するセル数を数える用途でもよく利用されます。
例えばCOUNTIFでは対応しにくい複雑な条件や、複数条件を組み合わせた集計を行う場合に、SUMPRODUCTと「–」を組み合わせることで柔軟な処理が可能になります。
実務では、「空白ではないセル数を数える」「特定条件に一致するデータ数を求める」「エラーを除外して集計する」といった場面で利用されます。
「–」を使わずに書く方法はあるのか
「–」と同じ目的で、TRUE/FALSEを数値化する方法はいくつかあります。代表的なものとして、1を掛ける方法やN関数を使う方法があります。
例えば、–A1の代わりにA1*1と記述することで、論理値を数値へ変換できます。ただし、Excel関数の中では「–」が短く、意図も分かりやすいため、多くのユーザーに使われています。
数式を見た人が「条件判定の結果を数値として扱っている」と理解しやすい点も、ダブルマイナス演算子が利用される理由の一つです。
まとめ
Excelの数式に登場する「–」は、TRUEやFALSEといった論理値を1と0の数値へ変換するための記号です。
=SUMPRODUCT(–NOT(ISERROR(A1:C1)))では、ISERRORでエラー判定を行い、NOTで反転した結果を「–」によって数値化し、SUMPRODUCTで合計しています。
一見すると意味が分かりにくい記号ですが、Excelでは条件付き集計や配列計算を行う際によく使われる便利なテクニックです。仕組みを理解すると、複雑な関数の読み解きや作成がしやすくなります。


コメント