Excel エラーの数をカウントする8つの方法

Excel エラーの数をカウントする8つの方法 Excel

はじめに:そのエラー、いくつあるか即答できますか?

前回は「エラー値だらけの配列を合計する」というカオスな挑戦をしましたが、今回はその続編です。

Excel エラー値のある配列を合計する6つの方法

「この表の中に、エラー何個ありますか?」

このシンプルな問いに、あなたならどう答えますか?

「1、2、3…」と指で数えますか?それとも、

COUNTIF関数で…あれ?
エラーってCOUNTIFで数えられるんだっけ?

今回は、前回と同じカオスな表を使って、「エラー値の個数(7個)」を導き出す方法を、なんと8種類も紹介します!

今回の挑戦者(配列データ)はこちら!

Excelの説明画像

表が必要な方は、以下の数式を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」をあぶり出してみましょう。

IFERRORERROR.TYPEといった専用関数だけでなく、IS系関数や最新の動的配列関数まで、関数の意外な一面が見えてくるはずです。

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!


8つのアプローチで、「7」をカウントせよ!

アプローチ1:王道!ISERROR関数

考えかた

まずは、最も基本的で、実務でも推奨される王道の方法です。

エラーですか?(Is error?)」と聞く関数を使います。

数式と解説

=SUM(ISERROR(A1:E5)*1)

1. ISERROR(A1:E5): 配列内の各セルがエラーかどうかを判定します。
エラーならTRUE、それ以外ならFALSEを返します。

Excelの説明画像

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

Excelの説明画像

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

Excelの説明画像

メリット: 誰が見ても「エラーを数えている」と分かる可読性の高さ。最も推奨される方法です。

デメリット: 特にありません。強いて言えば面白みに欠けるところでしょうか(笑)。

アプローチ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に「これは配列計算だよ!」と強制的に認識させ、正しく配列として処理させることができるのです。

Excelの説明画像

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

Excelの説明画像

2. ... * 1: Web版対策のおまじないです。

3. COUNT(...): COUNT関数は「数値」だけを数え、エラー値は無視します。

つまり、ERROR.TYPEで数値になった(=元々エラーだった)セルだけがカウントされるのです。

Excelの説明画像

メリット: 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!(エラーのまま!)

そう、エラー値だけは、文字を結合してもエラーのままなのです。

Excelの説明画像

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

Excelの説明画像

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

Excelの説明画像

メリット: 「エラーは結合してもエラー」という性質を利用した、パズル的な面白さがあります。

デメリット: ISNONTEXTというマイナーな関数の挙動を知っていないと解読困難です。

アプローチ4:ISERRとISNA関数のダブルチェック

考えかた

ISERRORを使わずに、エラーを網羅するには?

2つの関数を組み合わせればOKです。

数式と解説

=SUM(ISERR(A1:E5)+ISNA(A1:E5))

  • ISERR: #N/A 以外のすべてのエラーを検知します。
  • ISNA: #N/A エラーだけを検知します。
Excelの説明画像

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

Excelの説明画像

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

Excelの説明画像

メリット: エラーの種類を分解して考えたい場合に役立つロジックです。

デメリット: 単純にISERRORを使えばいい場面がほとんどなので、わざわざ分ける必要性は薄いです。

アプローチ5:数値かどうかの判定

考えかた

アプローチ3と似ていますが、今度は「1文字目を数値化できるか」で判定します。

数式と解説

=SUM(NOT(ISNUMBER(LEFT(1&A1:E5)*1))*1)

1. 1&A1:E5: すべてのセルの先頭に「1」をつけます。エラー値はエラーのままです。

Excelの説明画像

2. LEFT(..., 1): 左端の1文字(つまり、つけた「1」)を取り出します。

エラー値からは取り出せないので、エラーになります。

3. ... * 1: 取り出した「1」を数値化します。

これで、元々エラーでなかったセルはすべて「1(数値)」になり、元々エラーだったセルはエラーになります。

Excelの説明画像

4. ISNUMBER(...): 数値ならTRUE、エラーならFALSEになります。

5. NOT(...): 判定を逆転させます。元々エラーだった場所がTRUEになります。

論理値を0/1に変換し、合計します。

Excelの説明画像

メリット: 文字列操作と数値判定を組み合わせた、力技の解決法です。

デメリット: 工程が多く、処理も複雑です。

アプローチ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にします。

Excelの説明画像

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

Excelの説明画像

メリット: 文字コードを利用して、正常値を特定の値(0)に固定してしまう発想がユニークです。

デメリット: UNICODE関数の本来の使い方からは少し外れています。

アプローチ7:配列のセル数からエラー以外を引く

考えかた

エラーの数」=「全体の数」-「エラーじゃない数」
この引き算で求めます。

数式と解説

=COUNTA(A1:E5*1)-COUNT(UNICODE(0&A1:E5)^0)

1. COUNTA(A1:E5*1): COUNTA関数は本来空白を数えませんが、*1をすることで空白が「0」になり、カウントされます。エラーも数えます。

つまり、これは全セル数「25」を返します。

Excelの説明画像

実務でセル数を数えるならROWS(A1:E5)*COLUMNS(A1:E5)が確実ですが、今回は暇つぶしテクニックとして!

2. COUNT(UNICODE(0&A1:E5)^0): アプローチ6の応用です。

エラー以外のセルはUNICODEで数値になり、^0(0乗)することで「1」になります。

エラーはエラーのまま。COUNT関数はエラーを無視して数値だけを数えるので、これで「エラー以外の数(18個)」が求まります。

3. 25 - 18 = 7: これでエラーの数が求まりました!

Excelの説明画像

メリット: 逆説的なアプローチで、検算などにも使えます。

デメリット: 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」を指定すると、「エラー値を無視して」縦一列にします。

つまり、エラー以外のデータだけが並んだ配列になります。

Excelの説明画像

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

Excelの説明画像

メリット: 最新関数ならではの、スマートで可読性の高い方法です。引数ひとつでエラーを除外できるのは強力です。

デメリット: Microsoft 365などの新しいExcelでしか使えません。

まとめ:エラー数えの達人へ

ISERROR一発で済むところを、あえて8通りもの方法で解くことで、COUNT関数のWeb版での挙動や、TOCOL関数の便利なオプションなど、新たな発見があったのではないでしょうか。

エラーは避けるべきものですが、こうして「数える対象」として向き合ってみると、案外面白いやつら(?)かもしれませんね。

次回も、あっと驚くようなテーマで、皆さんの暇つぶし(とスキルアップ)をお手伝いします!

お楽しみに!

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