エクセルで合計が合わない4つの原因
小数点・文字列・非表示行・手動計算を、順番に見分ける
※本ページはアフィリエイト広告を利用しています
エクセルで出した合計が、電卓で計算した金額と合わない。1円だけ違う、あるいは何千円も違う。請求書を出す直前にこれが起きると、手が止まります。
こういうとき、よく言われるのが「小数点以下が隠れているから」という説明です。それは正しいのですが、原因はそれだけではありません。数値が文字列になっている場合、フィルターで行が隠れている場合、そもそも再計算されていない場合——見た目はどれも同じ「合計が合わない」です。
だから、直し方を調べる前に、まず自分がどれに当てはまるのかを確かめる必要があります。原因が違えば、直し方も違うからです。
私も最初のころは「合計が合わない=小数点のせい」と思い込んでいて、ROUND関数を入れても直らずに悩んだことがあります。原因が別のところにあったからでした。
この記事では、原因を4つに分けて、上から順に確かめていきます。1分もあれば見当がつきます。
結論:原因は4つ。上から順に確かめます
エクセルで合計が合わないとき、原因はだいたいこの4つのどれかです。
- 原因① 小数点以下が隠れている(いちばん多い)
- 原因② 数値が文字列になっている
- 原因③ フィルターや非表示行がある
- 原因④ 計算方法が「手動」になっている
順番に確かめていきます。これは「必ずこうなる」という診断ではなく、疑う順番です。1つ確かめて違ったら、次に進んでください。
スタート:数字を選んで、画面のいちばん下を見る
合計したいセルをドラッグして選びます。画面のいちばん下(ステータスバー)に、選んだセルの合計が出ます。そこで何が見えるかで、疑う先が変わります。
- 合計が出る。でも電卓と少しだけ違う → 小数点を疑う → 原因① 小数点以下が隠れている
- 合計が出ない、または明らかに少ない → 文字列を疑う → 原因② 数値が文字列になっている
※ステータスバーに合計が出ない理由は、文字列以外にもあります。ステータスバーの表示設定が外れている、選んだ範囲が違う、といった場合もあるので、まず「疑う」ところから始めてください。
どちらでもない/それでも合わない
- フィルターや行の非表示を使っている? → 原因③ フィルター・非表示行がある
- 数字を直しても合計が変わらない? → 原因④ 計算方法が「手動」になっている
原因③は、SUMとSUBTOTALを並べて比べるとすぐ分かります。原因④は、フィルターをかけても合計が動かないときにも疑ってください。
原因① 小数点以下が隠れている
いちばん多い原因です。
エクセルは、画面に表示されている数字ではなく、セルの中に入っている数字で計算します。表示形式で小数点以下を隠しても、中身は残ったままです。
たとえば、10.4 と 10.4 が入った2つのセル。表示形式で小数点以下を消すと、画面にはどちらも「10」と出ます。見た目は 10+10 で 20 のはずですが、実際は 10.4+10.4 なので合計は 20.8。これも表示形式で丸められて「21」と出ます。
画面では 10+10=21。これでは合いません。
直し方:表示形式ではなく、関数で丸める
表示形式をいくら変えても、中身は変わりません。中身そのものを丸めるには、関数を使います。
| やりたいこと | 関数 |
|---|---|
| 四捨五入 | =ROUND( 数値 , 0 ) |
| 切り捨て | =ROUNDDOWN( 数値 , 0 ) |
| 切り上げ | =ROUNDUP( 数値 , 0 ) |
どれを使うかは、エクセルの問題ではなく会社のルールで決まります。消費税の端数処理については、別の記事で詳しく書いています。
小数点が隠れているセルを、色を付けて探す
ここが、この記事でいちばんお伝えしたいところです。
原因が小数点だと分かっても、100行ある表のどのセルに小数が隠れているのかは、見ただけでは分かりません。1つずつ数式バーを確認するのは現実的ではありません。
そこで、条件付き書式を使って、小数を含むセルに色を付けます。
手順1:調べたい範囲を選ぶ ← ここを飛ばさないでください
いちばん大事な手順です。ここを飛ばすと、1つのセルにしか色がつきません。
行が多いときは、先頭のセルをクリックして Ctrl + Shift + ↓。データの最後まで一発で選べます。1000行でも2000行でも一瞬です。
手順2:「ホーム」タブ →「条件付き書式」→「新しいルール」
手順3:「数式を使用して、書式設定するセルを決定」に、式を入れる
一覧のいちばん下にある「数式を使用して、書式設定するセルを決定」を選び、次の式を入力します。
=B2<>ROUND(B2,0)
そのあと「書式」から塗りつぶしの色を選んで、OKを押します。
できあがり
原因のセルが一目で分かります。表示形式を小数点ありに戻して確かめると、色がついたセルだけ小数が入っていることが分かります。
式に書くセル番地は、選んだ範囲の左上に合わせる
式に書くのは1か所だけですが、色がつくのは選んだ範囲全部です。エクセルが各セルに合わせて自動でずらして判定します。
B2 は例です。実際に選んだ範囲の左上のセル番地に合わせて書き換えてください。C列の2行目から選んだなら =C2<>ROUND(C2,0)、D列の5行目からなら =D5<>ROUND(D5,0) です。
⚠️ $ は付けないでください。=$B$2<>ROUND($B$2,0) と書くと、範囲の全部のセルがB2の中身だけで判定されます。F4キーを押すと $ が付くので、うっかり押さないよう注意してください。
何円ずれているのかを出す
「全部で何円ずれているのか」を知りたいときは、調べたい範囲の外にある空いているセル(表の右横などが分かりやすいです)に、次の式を入力します。
=ROUND(SUM(B2:B5),0)-SUMPRODUCT(ROUND(B2:B5,0))
前半が「エクセルが出した合計を丸めた数字」、後半が「1行ずつ丸めてから足した数字」です。この2つの差が、「1行ずつ表示どおりに丸めて計算した場合」と「最後に合計を丸めた場合」の食い違いになります。
⚠️ 合計行は範囲に入れないでください。明細を全部足したものが合計なので、範囲に入れると同じ数字を2回数えることになります。色を付けるときは合計行を含めても構いません(合計にも小数が隠れていることが見えます)が、この式には入れないでください。
※式の中の ,0) は「整数に丸める」という意味です。この式には2か所あります。金額を整数で表示している表なら、このままで大丈夫です。
小数第2位まで表示している表なら、両方とも ,2) に変えてください。
=ROUND(SUM(B2:B5),2)-SUMPRODUCT(ROUND(B2:B5,2))
色を付ける式も同じで、=B2<>ROUND(B2,2) になります。片方だけ変えると、違う桁どうしを比べることになって答えが狂います。
※これは確認用の式です。見終わったら消してください。消し忘れて印刷すると、相手に渡す書類に確認用の数字が載ってしまいます。
この式で0以外が出たら
「小数点が隠れている」以外の原因でもズレは出ます。とくに、数値が文字列になっているときも、この式は数字を返します。
⚠️ 文字列が混ざっていても、エラーにはなりません。それらしい数字を返すので、「エラーが出ないから大丈夫」とは言えません。
そこで、数値として扱われていないセルの個数と合わせて見ると、原因が絞れます。数え方は 原因② の「見分け方3」にあります。
| ズレの式 | 数値でないセルの個数 | 疑うべき原因 |
|---|---|---|
| 0以外 | 0 | 原因① 小数点 |
| 0以外 | 0以外 | 原因② 文字列 |
金額の大きさもヒントになります。数円〜数十円の小さなズレなら小数点、大きなマイナスなら金額まるごと合計から抜けている=文字列の可能性があります。
うまくいかないとき
■ 1つのセルにしか色がつかない
ルールを作る前に範囲を選んでいなかった可能性が高いです。エクセルは、選んでいたセルだけを判定します。
「ホーム」→「条件付き書式」→「ルールの管理」で、そのルールの「適用先」を見てください。=$B$2 のように1つのセルだけになっていたら、=$B$2:$B$100 のように範囲に書き換えます。
※「適用先」の欄に $ が付いているのは正常です。$ を付けてはいけないのは、数式を入れる欄のほうです。
■ 関係ない列に色がつく
選んだ範囲と、式に書いたセル番地がずれています。この例では、A列を選んだのに式が =B2<>ROUND(B2,0) のままでした。エクセルはB列の中身を見て、A列に色をつけます。
エラーが出ないので、間違いに気づけません。色がついた場所がおかしいと思ったら、まずここを疑ってください。
原因② 数値が文字列になっている
セルに数字が入っているように見えても、エクセルが「文字」として扱っていることがあります。この場合、その数字は合計されません。
見分け方1:選んだ個数と、合計が釣り合っているか
数字のセルをドラッグで選んで、画面のいちばん下(ステータスバー)を見てください。
「データの個数」は文字列も数えますが、「数値の個数」は数値だけを数えます。この2つが食い違っていたら、文字列が混ざっています。
※「数値の個数」が出ていないときは、ステータスバーを右クリックして「数値の個数」にチェックを入れてください。ここに=COUNTA(...)-COUNT(...) と同じことが、数式なしで出ます。
※選んだセルが全部文字列だと、合計そのものが表示されません。
見分け方2:数字が左に寄っている
エクセルでは、数値は右寄せ、文字は左寄せで表示されます。何もしていないのに数字が左に寄っていたら、文字列として扱われている可能性が高いです。
見分け方3:数を数える
空いているセルにこう入力すると、範囲の中に「数値として扱われていないセル」がいくつあるか分かります。
=COUNTA(B2:B4)-COUNT(B2:B4)
0でなければ、その範囲には数値として扱われていないセルが混ざっています。文字列のほか、エラー値や、数式が返した空文字なども含まれます。
※これはステータスバーの「データの個数」から「数値の個数」を引いた数と同じです。上の写真(3個と1個)でも、答えは2で一致します。
行が増えると、目で探すのは不可能です。19行の表で同じことをすると、こうなります。
見分け方4:いくら抜けているかを出す
「金額にするとどれくらいなのか」は、原因①で使ったズレの式で分かります。範囲をこの表に合わせるだけです。
=ROUND(SUM(B2:B20),0)-SUMPRODUCT(ROUND(B2:B20,0))
上の写真の表では -1200 と出ました。100が19個あるので本来は1,900円のはずですが、合計は700円。1,200円が合計から抜けているということです。
SUMは文字列を無視しますが、この式の後半は文字列も数値として読みます。その差がそのまま「抜けている金額」になります。
※合計行は範囲に入れないでください。二重に数えることになります。
よくある原因
- 他のシステムやWebからコピーして貼り付けた
- 数字の中にスペースやカンマが混ざっている
- 先頭にアポストロフィ(
')が付いている
直し方1:緑の三角から「数値に変換する」
文字列になったセルの左上に、小さな緑の三角が出ていることがあります。そのセルを選ぶと出てくる警告マークをクリックしてください。
緑の三角が出ている場合は、これがいちばん簡単な方法です。
直し方2:区切り位置
セルを選んで「データ」タブ →「区切り位置」を開き、そのまま「完了」を押します。数字だけでできた文字列なら、これで数値に戻ることがあります。
それでも戻らないとき
数字の中にスペースや、目に見えない文字が混ざっていると、上の方法では戻らないことがあります。その場合は、いったん別のセルに =VALUE(B2) と入力して、数値に変換できるか確かめてみてください。
原因③ フィルターや非表示行がある
フィルターで絞り込んだ表で、SUM関数を使っていませんか。
SUM関数は、フィルターで見えなくなった行も合計します。画面に出ている行だけを足したいのに、隠れている行まで足されるので、合計が大きくなります。
直し方:SUBTOTAL関数を使う
=SUBTOTAL(109, B2:B20)
109は「合計。ただしフィルターで除外した行と、手動で非表示にした行を除く」という意味です。
この数字は集計方法の番号です。9が「合計(SUM)」で、100を足すと「手で隠した行も除く」版になります。
| 番号 | フィルターで非表示 | 手で隠した行 |
|---|---|---|
| 9 | 除く | 含む |
| 109 | 除く | 除く |
フィルターだけを使っているなら、9でも109でも結果は同じです。違いが出るのは、行番号を右クリックして「表示しない」で隠したときだけです。どちらが起きているか分からないなら、109にしておけば両方とも除けます。
※同じ番号のつけ方で、1(101)は平均、3(103)は空白でない個数、4(104)は最大値です。
確認のしかた
SUMとSUBTOTALを両方置いてみてください。数字が違えば、範囲内にフィルターや非表示になっている行がないか確認してみてください。
原因④ 計算方法が「手動」になっている
数字を直したのに合計が変わらない。フィルターをかけても合計が動かない。これは計算方法が「手動」になっている可能性があります。
初心者の方は「数式が壊れた」と思ってしまいがちですが、壊れてはいません。再計算されていないだけです。
自分で設定した覚えがなくても、他のファイルを開いた影響などで、計算方法が「手動」になっていることがあります。重い表の動作を軽くするために、誰かが設定していることもあります。
確認のしかた
「数式」タブ →「計算方法の設定」を見てください。「手動」にチェックが入っていたら、これが原因です。
直し方
「自動」に変更すると、通常はその場で再計算されます。すぐに再計算したいときは、F9キーも使えます。
エクセルと電卓、どちらの計算を正とするか
原因が分かって直したあと、もうひとつ考えることがあります。そもそも、どちらの数字を正とするのか、です。
たとえば請求書で、明細ごとに消費税を計算して合計する場合と、税抜の合計に対して消費税を1回だけ計算する場合とでは、答えが変わります。どちらも計算としては正しく、違うのは処理の順番です。
これはエクセルの問題ではありません。会社のルールや、取引先との取り決めで決まります。
「エクセルを電卓に合わせる」のではなく、「決まっているやり方に、エクセルを合わせる」。この順番で考えると迷いません。
なお、適格請求書(インボイス)を発行する場合、消費税の端数処理は税率ごとに1回だけと決まっています。こちらは別記事で書いています。
二度と起きない表にする
直したあとは、同じことが起きない形にしておきます。
1. 端数処理をする場所を、決めておく
「とりあえずROUNDで囲む」は、おすすめしません。どこで丸めるかは会社のルールで決まるからです。明細ごとに丸めるのか、合計してから丸めるのか。それが決まっているなら、そのとおりに関数を入れます。
明細ごとに丸めるルールなら =ROUND(C2*D2, 0)
大事なのは、「丸める場所を決めて、そこで必ず丸める」ことです。決めずに表示形式でごまかすと、今回の問題が起きます。
2. 表示形式で桁を減らして「隠す」のをやめる
見た目を整えるために小数点以下を非表示にすると、中身が残ります。丸めたいなら関数で丸めます。
3. フィルターを使う表では、最初からSUBTOTALにしておく
フィルターを使う予定があるなら、SUMではなくSUBTOTALで作っておきます。
4. 人からもらったファイルは、計算方法を確認する
開いたら「数式」タブの「計算方法の設定」を一度見る。これだけで原因④は防げます。
まとめ
- 合計が合わないときは、直す前に原因を4つから確かめる
- 原因① 小数点が隠れている……条件付き書式(
=B2<>ROUND(B2,0))で色を付けて探す。先に範囲を選ぶ - 原因② 数値として扱われていない……ステータスバーの「データの個数」と「数値の個数」を見比べる/
=COUNTA(…)-COUNT(…)で個数、ズレの式で金額/緑の三角から「数値に変換する」 - 原因③ フィルター・非表示行……SUMではなく
=SUBTOTAL(109,…) - 原因④ 計算方法が「手動」……「数式」タブで確認。
F9で再計算 - どちらを正とするかは、エクセルではなく会社のルールで決まる
- 端数処理をする場所を決めておくと、同じズレを防ぎやすい
関連ツール
消費税の内訳や、源泉徴収の金額を確かめたいときは、こちらもどうぞ。