はじめに:そのエラー、いくつあるか即答できますか?
前回は「エラー値だらけの配列を合計する」というカオスな挑戦をしましたが、今回はその続編です。
「この表の中に、エラーは何個ありますか?」
このシンプルな問いに、あなたならどう答えますか?
「1、2、3…」と指で数えますか?それとも、
COUNTIF関数で…あれ?
エラーってCOUNTIFで数えられるんだっけ?
今回は、前回と同じカオスな表を使って、「エラー値の個数(7個)」を導き出す方法を、なんと8種類も紹介します!
今回の挑戦者(配列データ)はこちら!

表が必要な方は、以下の数式をA1セルに貼り付けてくださいね!
={95,21,"あ","","57";#DIV/0!,28,56,#NULL!,98;" ",#N/A,13,9,77;#NAME?,57,"#スピル!",49,#VALUE!;45,"#CALC!","16","$",61}
この5行5列、全25セルの中には、#DIV/0!や#N/Aなどのエラー値が「7個」隠れています。
王道の関数から、一見エラーとは無関係そうな関数まで、様々なアプローチでこの「7」をあぶり出してみましょう。
IFERRORやERROR.TYPEといった専用関数だけでなく、IS系関数や最新の動的配列関数まで、関数の意外な一面が見えてくるはずです。
本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!
8つのアプローチで、「7」をカウントせよ!
アプローチ1:王道!ISERROR関数
考えかた
まずは、最も基本的で、実務でも推奨される王道の方法です。
「エラーですか?(Is error?)」と聞く関数を使います。
数式と解説
=SUM(ISERROR(A1:E5)*1)
1. ISERROR(A1:E5): 配列内の各セルがエラーかどうかを判定します。
エラーならTRUE、それ以外ならFALSEを返します。

2. ... * 1: TRUE(1)とFALSE(0)に変換します。

3. SUM(...): 最後にそれらを合計します。

メリット: 誰が見ても「エラーを数えている」と分かる可読性の高さ。最も推奨される方法です。
デメリット: 特にありません。強いて言えば面白みに欠けるところでしょうか(笑)。
アプローチ2:ERROR.TYPE関数でエラーを数値化
考えかた
エラーの種類を番号(1~14など)で返すERROR.TYPE関数を使います。
エラー以外は#N/Aエラーになるという性質を持っています。
数式と解説
=COUNT(ERROR.TYPE(A1:E5)*1)
ここで一つ、非常に重要なポイントがあります。
「なぜ *1 をしているの?」と思いませんでしたか?
実は、ローカル版Microsoft365のExcelでは =COUNT(ERROR.TYPE(A1:E5)) だけで計算できるのですが、Web版Excelでは、この数式は「0」を返してしまうことがあります。
*1 を加えて計算を挟むことで、Excelに「これは配列計算だよ!」と強制的に認識させ、正しく配列として処理させることができるのです。

1. ERROR.TYPE(A1:E5): エラー値は数値(種類コード)に、エラー以外は#N/Aになります。

2. ... * 1: Web版対策のおまじないです。
3. COUNT(...): COUNT関数は「数値」だけを数え、エラー値は無視します。
つまり、ERROR.TYPEで数値になった(=元々エラーだった)セルだけがカウントされるのです。

メリット: COUNT関数の「エラーを無視して数値を数える」という特性をうまく利用しています。
デメリット: Web版とローカル版の挙動の違い(*1が必要かどうか)に注意が必要です。
アプローチ3:まさかのISNONTEXT関数
考えかた
「文字列ではないもの」を判定するISNONTEXT関数。
これをどう使うのか?逆転の発想です!
数式と解説
=SUM(ISNONTEXT("a"&A1:E5)*1)
1. "a"&A1:E5: すべてのセルの先頭に文字”a“をくっつけます。
- 数値(95) → “a95″(文字列)
- 文字列(“あ”) → “aあ”(文字列)
- 空白 → “a”(文字列)
- エラー(#DIV/0!) → #DIV/0!(エラーのまま!)
そう、エラー値だけは、文字を結合してもエラーのままなのです。

2. ISNONTEXT(...): 文字列になったものはFALSE、エラーのままのものは「文字列ではない」のでTRUEになります。

3. SUM(...*1): TRUEを合計して完了です。

メリット: 「エラーは結合してもエラー」という性質を利用した、パズル的な面白さがあります。
デメリット: ISNONTEXTというマイナーな関数の挙動を知っていないと解読困難です。
アプローチ4:ISERRとISNA関数のダブルチェック
考えかた
ISERRORを使わずに、エラーを網羅するには?
2つの関数を組み合わせればOKです。
数式と解説
=SUM(ISERR(A1:E5)+ISNA(A1:E5))
- ISERR:
#N/A以外のすべてのエラーを検知します。 - ISNA:
#N/Aエラーだけを検知します。

この2つを足し算(OR条件)すれば、すべてのエラーをカバーできますね。

TRUE + FALSE = 1、FALSE + FALSE = 0 なので、そのままSUMで合計できます。

メリット: エラーの種類を分解して考えたい場合に役立つロジックです。
デメリット: 単純にISERRORを使えばいい場面がほとんどなので、わざわざ分ける必要性は薄いです。
アプローチ5:数値かどうかの判定
考えかた
アプローチ3と似ていますが、今度は「1文字目を数値化できるか」で判定します。
数式と解説
=SUM(NOT(ISNUMBER(LEFT(1&A1:E5)*1))*1)
1. 1&A1:E5: すべてのセルの先頭に「1」をつけます。エラー値はエラーのままです。

2. LEFT(..., 1): 左端の1文字(つまり、つけた「1」)を取り出します。
エラー値からは取り出せないので、エラーになります。
3. ... * 1: 取り出した「1」を数値化します。
これで、元々エラーでなかったセルはすべて「1(数値)」になり、元々エラーだったセルはエラーになります。

4. ISNUMBER(...): 数値ならTRUE、エラーならFALSEになります。
5. NOT(...): 判定を逆転させます。元々エラーだった場所がTRUEになります。
論理値を0/1に変換し、合計します。

メリット: 文字列操作と数値判定を組み合わせた、力技の解決法です。
デメリット: 工程が多く、処理も複雑です。
アプローチ6:UNICODE関数とIFERROR
考えかた
文字コードを返すUNICODE関数を使います。
数式と解説
=SUM(IFERROR(UNICHAR(UNICODE(0&A1:E5))*1,1))
1. 0&A1:E5: 先頭に「0」をつけます。
2. UNICODE(...): 先頭の文字(つまり「0」)の文字コード「48」を返します。しかし、エラー値の場合はエラーになります。
3. UNICHAR(...): 文字コード48を文字「0」に戻します。エラーはエラーのままです。
4. ... * 1: 文字「0」を数値の0にします。

5. IFERROR(..., 1): ここがポイント!「0」にならなかった場所(=エラー)を「1」に変換します。

メリット: 文字コードを利用して、正常値を特定の値(0)に固定してしまう発想がユニークです。
デメリット: UNICODE関数の本来の使い方からは少し外れています。
アプローチ7:配列のセル数からエラー以外を引く
考えかた
「エラーの数」=「全体の数」-「エラーじゃない数」
この引き算で求めます。
数式と解説
=COUNTA(A1:E5*1)-COUNT(UNICODE(0&A1:E5)^0)
1. COUNTA(A1:E5*1): COUNTA関数は本来空白を数えませんが、*1をすることで空白が「0」になり、カウントされます。エラーも数えます。
つまり、これは全セル数「25」を返します。

実務でセル数を数えるならROWS(A1:E5)*COLUMNS(A1:E5)が確実ですが、今回は暇つぶしテクニックとして!
2. COUNT(UNICODE(0&A1:E5)^0): アプローチ6の応用です。
エラー以外のセルはUNICODEで数値になり、^0(0乗)することで「1」になります。
エラーはエラーのまま。COUNT関数はエラーを無視して数値だけを数えるので、これで「エラー以外の数(18個)」が求まります。
3. 25 - 18 = 7: これでエラーの数が求まりました!

メリット: 逆説的なアプローチで、検算などにも使えます。
デメリット: COUNTAの挙動(*1で空白を数える)を理解していないとハマります。
アプローチ8:最後は、ROWSとTOCOL
考えかた
最新関数のTOCOLには、実はすごいオプションがあるんです。
数式と解説
=ROWS(TOCOL(A1:E5))-ROWS(TOCOL(A1:E5,2))
1. TOCOL(A1:E5): 5×5の配列を、縦一列(25行)の配列に変換します。
2. TOCOL(A1:E5, 2): 第2引数に「2」を指定すると、「エラー値を無視して」縦一列にします。
つまり、エラー以外のデータだけが並んだ配列になります。

3. ROWS(...) - ROWS(...): 全体の行数(25)から、エラーを除いた行数(18)を引けば、残るはエラーの数(7)ですね!

メリット: 最新関数ならではの、スマートで可読性の高い方法です。引数ひとつでエラーを除外できるのは強力です。
デメリット: Microsoft 365などの新しいExcelでしか使えません。
まとめ:エラー数えの達人へ
ISERROR一発で済むところを、あえて8通りもの方法で解くことで、COUNT関数のWeb版での挙動や、TOCOL関数の便利なオプションなど、新たな発見があったのではないでしょうか。
エラーは避けるべきものですが、こうして「数える対象」として向き合ってみると、案外面白いやつら(?)かもしれませんね。
次回も、あっと驚くようなテーマで、皆さんの暇つぶし(とスキルアップ)をお手伝いします!
お楽しみに!


