Excelの0がパーセント表示にならない|IFERRORの「0」で詰まった話

お疲れ様です、田村です。Excelで、割合を計算するセルをコピーして別のセルへ貼り付ける作業をしていました。貼り付けた結果もパーセント表示で扱いたいのに、計算結果が0のセルだけ「0.00%」にならないことがありました。

作業の流れは「割合の計算式が入ったセル → コピーして貼り付け → 貼り付け先の表示桁数を整える」です。ところが、小数点以下の桁を増やすボタンを押しても変わらず、正常なセルからパーセントの書式だけをコピーしても直りませんでした。

原因は、コピー元の計算式がエラー時に返す値でした。数値の 0 ではなく、引用符付きの "0" になっていました。 見た目はどちらも0ですが、後者は文字列です。数値として返す形に直し、この割合表示の問題は解消しました。

IFERRORで数値の0と文字列の0を返す式の比較。引用符の有無で結果の種類が変わる

私が確認した順番

  1. 貼り付け先のセルで、小数点以下の桁数を増やした。変化なし。
  2. 正常な割合セルから、書式だけをコピーした。それでも変化なし。
  3. コピー元の計算式を見直し、IFERROR のエラー時の返り値が "0" になっていることに気づいた。
  4. 数値として使うゼロを 0 に直した。

最初の2つは「どう表示するか」の操作でした。文字列として返ってきたゼロを、数値のゼロへ変える操作ではありません。Microsoftの説明でも、数値の表示形式は見え方を変えるもので、セルの実際の値を変えるものではありません。

なぜ式が "0" になっていたのかは分かっていません。 コピー操作やExcelの更新が式を書き換えたと断定はできません。

0 と "0" の違い

次の式は、違いを説明するために作った再現用の例です。私の元ファイルの数式をそのまま転載したものではありません。たとえばB1が0で割り算がエラーになった場合、IFERROR は最後の引数を返します。

エラー時の指定 式の例 割合表示にしたとき
数値のゼロ =IFERROR(A1/B1,0) 数値0として「0.00%」などにできる
文字列のゼロ =IFERROR(A1/B1,"0") 見た目は0でも文字列。数値の表示形式だけでは変わらない

IFERROR は、先の計算がエラーになったとき、第2引数を返します。Microsoftの関数説明にも構文が示されています。

同じ現象に出会ったら、貼り付け先の書式を何度も変える前に、コピー元の数式バーで 0 に引用符が付いていないか確認すると早いです。数値として扱いたい場所では、エラー時に返す値を 0 にします。すでに値として貼り付けたセルもあるなら、そのセルに残った文字列のゼロは別途見直します。

今回の学び

見た目が同じ0でも、数値と文字列では後の表示や計算の扱いが変わります。私は書式を何度も直そうとしてから、ようやく数式の "0" に気づきました。

なお、同じブックでは後にVBAのコピー処理や別の表示崩れも話題になりましたが、そちらの原因は確認できていません。この記事で「直った」と書けるのは、割合セルのゼロが文字列になっていた問題までです。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA