Excelで売上差額、在庫数、予算との差、勤務時間などを計算した際に、結果が-になることがあります。
数式が間違っているのか、それとも負の数を0として表示したいだけなのかを切り分けることが、正しい対処への近道です。
この記事では、エクセルで計算結果がマイナスになる代表的な原因、負の値を0にする数式、表示形式だけで見た目を変える方法を詳しく解説します。
計算結果そのものを0にしたい場合はMAX関数やIF関数を使います。
元の計算結果を残したまま見た目だけを変えたい場合は、ユーザー定義の表示形式を使います。
用途に応じて計算式と表示形式を使い分けることが重要です。
サンプルデータは、1行目に見出しが入力されている表を前提に説明します。
エクセルで負の値を0にする方法【MAX関数】
それではまず、計算結果がマイナスになったときに、負の値を0へ置き換えるMAX関数について解説していきます。
| 商品名 | 売上 | 目標 | 差額 | 0未満を0にした結果 |
|---|---|---|---|---|
| A商品 | 120 | 100 | 20 | 20 |
| B商品 | 80 | 100 | -20 | 0 |
| C商品 | 100 | 100 | 0 | 0 |
MAX関数で0と計算結果を比較する仕組み

MAX関数は、指定した複数の値の中から最も大きい数値を返す関数です。
たとえばD2セルに売上と目標の差額を求める数式として、=B2-C2を入力すると、B商品では80から100を引くため-20になります。
この結果を0未満にしたくない場合は、E2セルに=MAX(0,D2)と入力します。
=MAX(0,D2)
0とD2セルの計算結果を比較し、大きい方の値を返す数式です。
D2が20なら20の方が大きいため、結果は20になります。
D2が-20なら0の方が大きいため、結果は0になります。
MAX関数は、負の数を0に制限する処理を短い数式で書ける点が大きな利点です。
売上の不足分をマイナスで表示せず、達成額として最低0を表示したいケースにも向いています。
数値そのものが0になるため、後から合計、平均、グラフ、ピボットテーブルで集計する場合にも、その0が計算へ反映されます。
元の引き算とMAX関数を一つにまとめる数式
差額を別の列へ計算していない場合は、MAX関数の中に引き算を直接入力できます。
たとえば売上がB列、目標がC列なら、D2セルへ=MAX(0,B2-C2)と入力します。
=MAX(0,B2-C2)
売上から目標を引いた値が正ならその値を返し、負なら0を返します。
この形であれば、差額用の補助列を作らずに結果列だけで処理できます。
行数が多い一覧では、数式を入力したD2セル右下のフィルハンドルを下方向へドラッグし、オートフィルで数式をコピーしましょう。
Excelのテーブル機能を使用している場合は、最初のデータ行へ数式を入力すると同じ列へ自動で数式が反映されることもあります。
B2-C2の順番を逆にすると意味が変わるため、どちらを基準にする差額なのかを確認してから入力することが大切です。
たとえば在庫残数なら、入庫数から出庫数を引くのか、発注数から納品数を引くのかで数式の並びが変わります。
MAX関数を使う際の注意点
MAX関数で負の値を0にすると、元々のマイナス値は結果セルに残りません。
不足数や赤字額そのものも管理したい場合は、通常の差額列と、0未満を0にした結果列を分ける方法が安全です。
たとえばD列に=B2-C2、E列に=MAX(0,D2)を設定すると、実際の差額と制限後の数値を同時に確認できます。
また、セルに数値ではなく文字列が入っていると、期待した計算結果にならないことがあります。
数字に見えても文字列として保存されている場合は、セル左上の緑色の三角マーク、表示位置、数式バーの内容を確認しましょう。
負の値を0にする処理は、業務上マイナスが存在しない項目だけに限定することが重要です。
実際には赤字や不足を示すマイナス値まで0へ変えると、問題の発見が遅れるおそれがあります。
【操作のポイント】元の差額を確認する必要がある場合は、通常の計算列を残したうえで、別列にMAX関数を設定します。
エクセルで計算結果が-になる主な原因
続いては、Excelの計算結果が-になる代表的な原因を確認していきます。
| 計算内容 | 数式例 | 計算結果が-になる条件 |
|---|---|---|
| 売上差額 | =B2-C2 | 売上が目標より少ない場合 |
| 在庫残数 | =B2-C2 | 出庫数が入庫数より多い場合 |
| 日付差 | =B2-A2 | 終了日が開始日より前の場合 |
引き算の順番が想定と異なるケース

最も多い原因は、引き算を行うセルの順番が意図と異なることです。
=B2-C2は、B2からC2を引く数式です。
たとえばB2が80、C2が100なら、結果は-20になります。
このマイナスが正しいかどうかは、数式そのものではなく、どの数値を何と比較したいかによって決まります。
目標に対して売上がどれだけ不足しているかを表示したいなら、=B2-C2の-20には意味があります。
反対に、不足額を正の数20として表示したいなら、=C2-B2とするか、ABS関数を使う必要があります。
マイナス表示を見つけたら、最初に数式バーで参照セルの順番を確認しましょう。
セルの見た目だけを見て判断するのではなく、クリックして数式バーに表示される式を確認する習慣が役立ちます。
入力値や参照先のずれによるケース
数式のコピー後に、参照先が一行ずれていることもあります。
本来はB3-C3で計算するべき行に、B3-C2のような数式が入っていると、別行の数値を引いてしまいます。
相対参照では、数式をコピーすると参照セルも移動します。
固定したいセルがある場合は、$記号を付けた絶対参照を利用します。
=MAX(0,B2-$F$1)
F1セルの基準値を固定しながら、各行のB列だけを変えて計算する例です。
また、フィルターで非表示の行、別シート、外部ブックを参照している数式も確認対象になります。
意図しない負の値は、計算ロジックだけでなく参照範囲のずれから生じることがあります。
数式のトレース機能を使うと、参照元と参照先を矢印で確認できるため、複雑な表でも原因を追いやすくなります。
日付と時刻の計算で表示が崩れるケース
日付や時刻の引き算でも、結果が負の値になる場合があります。
終了日時から開始日時を引く計算で、終了側が開始側より前なら、経過時間は負になります。
ただしExcelの標準の日付システムでは、負の時刻を時刻形式で表示できず、セルに#######と表示されることがあります。
これは列幅だけが原因とは限らず、負の日時や負の時刻を標準形式で表示できないことが原因になる場合があります。
勤務時間のように負の時間を避けたい場合は、=MAX(0,終了時刻-開始時刻)という考え方を利用できます。
ただし、夜勤のように日付をまたぐ勤務では、単純な引き算ではなく日付と時刻を含めた入力方法を検討しましょう。
日付の扱いを誤ると、0に丸めたことで入力ミスが見えなくなる可能性もあります。
【操作のポイント】負の値が想定外の場合は、引き算の順番、数式の参照先、日付と時刻の入力順を順番に確認します。
IF関数で負の数を0に置き換える数式
続いては、条件を指定して負の数を0に置き換えられるIF関数の使い方を確認していきます。
| A列 | B列 | C列 | D列 |
|---|---|---|---|
| 実績 | 基準 | 差額 | 判定後の値 |
| 75 | 100 | -25 | 0 |
| 130 | 100 | 30 | 30 |
IF関数の基本形
IF関数は、指定した条件が成立するかどうかで、返す値を切り替える関数です。
負の値を0にするには、計算結果が0未満かどうかを条件にします。
=IF(C2<0,0,C2)
C2セルが0未満なら0を返し、0以上ならC2セルの値を返します。
たとえばC2に-25が入っている場合、C2<0という条件が成立するため、結果は0です。
C2に30が入っている場合は条件が成立しないため、結果はC2と同じ30になります。
IF関数は、負の値を0にするだけでなく、条件に応じて文字列や別の計算結果を返せる柔軟さがあります。
たとえば数値の代わりに「要確認」と表示する、空白セルなら空白を返すといった処理にも応用できます。
引き算を含めたIF関数の入力方法
差額用のセルを作らず、IF関数だけで判定と引き算を行うこともできます。
実績がB2、基準がC2の場合は、=IF(B2-C2<0,0,B2-C2)と入力します。
=IF(B2-C2<0,0,B2-C2)
実績から基準を引いた結果が負なら0、それ以外なら差額を表示します。
ただし、同じB2-C2という計算を数式内で2回書く必要があります。
単純に下限を0へ固定するだけなら、=MAX(0,B2-C2)の方が短く読みやすい場合もあります。
一方で、負のときに0以外を返す必要があるならIF関数が便利です。
たとえば=IF(B2-C2<0,”不足”,B2-C2)とすると、負の結果を数値の0ではなく不足という文字で知らせられます。
この場合、結果列には文字列が混在するため、合計や平均に使う列とは分けると管理しやすくなります。
空白セルとエラー値を考慮した数式
入力途中の表では、空白セルがある行まで0と表示されることがあります。
空白行には何も表示したくない場合、最初に入力の有無を判定します。
=IF(OR(B2=””,C2=””),””,MAX(0,B2-C2))
B2またはC2が空白なら空白を返し、両方に数値がある場合だけ0未満を0にした結果を返します。
入力内容に#VALUE!などのエラーが含まれる場合は、IFERROR関数を組み合わせる方法もあります。
=IFERROR(MAX(0,B2-C2),””)とすると、計算エラーが起きた際には空白を表示できます。
エラーを空白へ変える場合でも、入力不備を見落とさないように元データの確認は必要です。
特に請求額や在庫数などの重要な一覧では、エラーを隠すだけでなく、条件付き書式で入力漏れを目立たせる方法も有効です。
【操作のポイント】0以外の表示や空白判定も必要ならIF関数、単純な下限設定ならMAX関数を選びます。

負の数の表示形式と見た目だけを0にする方法
続いては、数式の値を変えずに負の数の見た目だけを調整する表示形式について確認していきます。
| 元の値 | 通常表示 | 表示形式の例 | 見た目の例 |
|---|---|---|---|
| 2500 | 2500 | #,##0 | 2,500 |
| -2500 | -2500 | #,##0;[赤]-#,##0 | -2,500 |
| 0 | 0 | #,##0;[赤]-#,##0;0 | 0 |
表示形式でできることとできないこと
セルの表示形式は、セルに保存されている数値を変更せず、画面上でどのように見せるかを設定する機能です。
たとえば-2500という値に対して、赤字、かっこ付き、桁区切り付きで表示することができます。
しかし、表示形式だけでは、元の-2500を計算上の0へ変えることはできません。
後続のSUM関数や平均、グラフの元データに影響させたいなら、表示形式ではなく数式で0に置き換える必要があります。
反対に、赤字額や不足額という情報を残しつつ、帳票を見やすく整えたい場合は表示形式が適しています。
用途を混同すると、画面では0に見えるのに合計値が想定と合わないといった混乱につながるため注意しましょう。
セルの書式設定からユーザー定義を入力する手順
負の数の表示方法を変えるには、対象セルまたは対象列を選択します。
次に右クリックし、セルの書式設定を選択します。
表示形式タブからユーザー定義を開き、種類の入力欄へ希望する表示形式を入力します。
B
罫線
中央揃え
セルの書式設定
➤
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 商品名 | 売上 | 目標 | 差額 |
| 2 | B商品 | 80 | 100 | -20 |
| 3 | C商品 | 120 | 100 | 20 |
ユーザー定義の表示形式は、正の数、負の数、ゼロ、文字列の順にセミコロンで区切って指定できます。
#,##0;[赤]-#,##0;0
正の数は桁区切り、負の数は赤色のマイナス表示、ゼロは0として表示する設定です。
設定を確定すると、選択したセルの見た目だけが変わります。
操作中に表示形式がうまく反映されない場合は、対象セルが文字列形式になっていないかも確認しましょう。
マイナス記号や赤字を使い分ける方法
負の数は、-2500のようにマイナス記号を付けて表示するほか、(2500)のようにかっこで囲んで表す方法があります。
経理資料では、かっこ付きの負数表記が使われることもあります。
#,##0;[赤](#,##0);0
負の数だけを赤色かつかっこ付きで表示する例です。
負の数が重要な警告になる表では、赤字表示を加えると確認しやすくなります。
ただし、色だけに依存すると印刷時や色覚特性によって伝わりにくい場合があります。
赤字とマイナス記号、または赤字とかっこを組み合わせると、負の値であることを伝えやすくなります。
0をハイフンで見せたい帳票では、ゼロ用の表示形式を別に設定することもできます。
ただし、画面にハイフンが表示されていても、実際のセル値が0なのか空白なのかは数式バーで確認する必要があります。
【操作のポイント】表示形式は見た目を整える機能です。計算結果を0として集計したい場合にはMAX関数やIF関数を使用します。
ABS関数と条件付き書式による負の値の扱い
続いては、マイナスの符号を外すABS関数と、負の数を視覚的に確認しやすくする条件付き書式について確認していきます。
| 元の差額 | MAX関数の結果 | ABS関数の結果 | 意味 |
|---|---|---|---|
| -35 | 0 | 35 | 不足額の大きさ |
| 35 | 35 | 35 | 超過額の大きさ |
ABS関数で絶対値を求める仕組み
ABS関数は、数値の符号を外した絶対値を返す関数です。
=ABS(D2)と入力すると、D2が-35でも35でも、結果は35になります。
MAX関数が負の数を0にするのに対し、ABS関数は負の数の大きさを正の数として残す点が違います。
不足額、誤差、距離、差の大きさだけを集計したい場合にはABS関数が適しています。
たとえば予算との差が-5000円であっても、不足額として5000円を表示したい場合に利用できます。
ただし、ABS関数を使うとプラスだったのかマイナスだったのかという方向の情報は失われます。
増加と減少を区別する必要がある表では、元の差額列を残したうえでABS関数の列を追加しましょう。
条件付き書式で負の値を目立たせる方法
負の数を0にせず、入力ミスや不足を見逃さないようにしたい場合は条件付き書式が便利です。
対象範囲を選択し、ホームタブの条件付き書式からセルの強調表示ルールを選びます。
次に、指定の値より小さいを選択し、値に0を入力します。
書式として薄い赤の塗りつぶしや濃い赤の文字列を選ぶと、0未満のセルだけが目立つようになります。
条件付き書式は元の計算結果を変えず、確認が必要な負の値だけを視覚的に知らせる方法です。
在庫不足、予算超過、期限超過日数などを一覧で確認する場面に向いています。
条件付き書式の適用先は、数式をコピーした後の行まで含まれているか確認してください。
適用先が途中までの場合、新しく追加した行だけ色が変わらないことがあります。
目的別に選ぶ関数と書式
負の値を扱うときは、まずそのマイナスに業務上の意味があるかを考えます。
マイナスが存在してはならない項目なら、MAX関数で0を下限に設定できます。
負のときに別の表示や判定を出したいなら、IF関数が向いています。
差の大きさだけを知りたいならABS関数、数値を変えずに注意喚起したいなら条件付き書式や表示形式を使います。
下限を0にする場合はMAX関数
条件により値を切り替える場合はIF関数
符号を除いた差の大きさはABS関数
計算値を維持して見た目を変える場合は表示形式または条件付き書式
同じマイナス表示でも、目的によって正解となる処理は異なります。
計算式を変更する前に、その列が集計、グラフ、請求書、データ連携のどれに使われるかを確認しておくと安心です。
【操作のポイント】負の値を消すのではなく、残すべき情報かどうかを判断してからMAX、IF、ABS、書式を選びます。
まとめ エクセルで計算結果が-になる原因と負の数を0にする方法
エクセルで計算結果が-になる主な理由は、引き算の結果が負になること、参照セルの順番や範囲がずれていること、日付や時刻の入力順が想定と異なることです。
実際にマイナスが不要な計算であれば、=MAX(0,計算式)を使うことで、負の値を0にできます。
条件に応じて空白や文字列も返したい場合には、IF関数を使うと柔軟に設定できます。
一方、元のマイナス値を残したまま見た目だけを調整したい場合は、ユーザー定義の表示形式や条件付き書式を使いましょう。
計算結果を変えるのか、表示だけを変えるのかを最初に決めることが、Excelで負の数を正しく扱うポイントです。
元データの意味を確認し、必要に応じて通常の差額列も残しておくと、集計や検証で困りにくくなります。