日常の「地味に面倒」をなくすツール集

Excelの数式が「#NAME?」「括弧が合わない」で止まる人へ — 貼るだけでミスを見つけて日本語で解説するチェッカー

Excelの数式は、慣れた人には一瞬でも、そうでない人には「なぜか動かない」ことの連続です。海外のコミュニティでも「ネストしたExcelの数式はいまだに書くのが苦痛だ(Why nested Excel formulas are still a pain to write)」という投稿があり、閉じ括弧の数、絶対参照と相対参照の使い分け、複数シートにまたがる参照の崩れが、繰り返しつまずく場所として挙げられていました。

実際、Excelのエラーメッセージは親切ではありません。「この数式には問題があります」と言われても、どの括弧が足りないのかは教えてくれない。#NAME? と出ても、関数名のスペルミスなのか、引用符を忘れた文字列なのか、全角文字が混ざっているのかは自分で探すしかない。

数式を貼るだけで、ミスと意味を出す

Excel数式チェッカーは、セルの中身をそのまま貼り付けると、次の4つを表示するツールです。

  1. ミスの一覧(エラー / 注意 / 参考の3段階)
  2. 修正後の数式(全角→半角の変換、足りない括弧の補完)
  3. 日本語での読み下し(「もし B2 が 80 以上なら → 「A」、そうでなくもし…」)
  4. インデント表示と構造ツリー、使われている参照の一覧

たとえば =IF(B2>=80,"A",IF(B2>=60,"B",IF(B2>=40,"C","D") を貼ると、「15文字目から始まる IF 関数が閉じられていません」と場所つきで指摘し、括弧を補った数式と、分岐を1行ずつ書き出した説明を返します。

見つけられる「定番のミス」

日本語環境で特に多いのが全角文字です。日本語入力のまま =IF(A1>0,”合格”,”不合格”) と打ってしまうケースで、見た目はほぼ同じなのにExcelは受け付けません。チェッカーは全角の括弧・カンマ・引用符・英数字・演算子を数えて指摘し、半角に直した数式を出します(文字列の中の日本語はそのまま残します)。

ほかに検出するもの:

  • 閉じ括弧の不足・過剰、引用符の閉じ忘れ
  • 引数の数の過不足(IF は3つまで、SUMIFS は奇数個、COUNTIFS は偶数個 など主要約120関数)
  • カンマが連続して引数が空になっている
  • =< => のような無効な比較演算子(正しくは <= >=)
  • 関数名のスペルミス(VLOKUP → 「VLOOKUP の入力ミスではありませんか?」)
  • 引用符で囲まれていない日本語(IF(A1=はい,1,0)#NAME? になります)
  • セミコロン区切り(ヨーロッパの地域設定からコピーした数式)

エラーにならないのに結果が違う、を防ぐ

もっと厄介なのは「エラーは出ないが答えが間違っている」数式です。代表格が VLOOKUP の第4引数の省略。省略すると近似一致になり、検索列が昇順に並んでいないと、違う行の値を平然と返します。チェッカーはこれを「注意」として表示し、完全一致にするなら FALSE を付けるよう案内します。

検索範囲が相対参照のままというのもよくある事故です。VLOOKUP(A2,B2:D100,3,FALSE) を下にコピーすると、範囲が B3:D101B4:D102 とずれていき、下の行ほど見つからなくなる。チェッカーは範囲を $B$2:$D$100 のように固定する提案を出します。

絶対参照・相対参照を日本語で

$A$1A$1$A1A1 の4通りは、Excelを覚えるときの最初の壁です。チェッカーは数式に出てくる参照を一覧にして、それぞれ「列も行も固定(コピーしてもずれない)」「行だけ固定(右にコピーすると列が進む)」のように説明します。Sheet2!A1'売上 表'!A1 のような他シート参照も、どのシートのどこを見ているかを書き出します。

データの扱い

数式の解析はすべてブラウザ内(JavaScript)で行い、入力した数式はサーバーに送信されません。社内の数式や、シート名・列名に業務情報が含まれる数式でも安心して貼り付けられます。計測しているのは「チェックを実行した回数」と「エラーの件数」だけで、数式の内容は含みません。

制限事項

  • 構文(形)のチェックです。実際のセルの値を使った計算結果の検証はしません。
  • 引数の数を確認できるのは辞書にある約120関数です。辞書にない関数は「参考」として表示し、引数の数は確認しません。
  • 構造化参照(テーブル1[列名])やスピル範囲演算子(A1#)は簡易的な扱いです。

「数式を書いたけど自信がない」「他人が作った長い数式の意味を知りたい」というときに、まず貼ってみてください。