ExcelのIF関数で「空白以外」を条件にする方法|スペースや””で判定がずれる原因と対処

IF関数 空白以外

ExcelのIF関数で「空白以外なら○○する」という条件は、=IF(A1<>””,真の場合,偽の場合) で書けます。

ただし、この式は「見た目が空白かどうか」を判定しているわけではありません。スペースだけ入ったセルは「空白以外」と判定され、数式で「””」を返しているセルは「空白」と判定されます。さらに、AND関数と組み合わせた定番の合否判定式は、文字列やスペースが入ったセルを「合格」と判定してしまうことがあります。エラーは出ないので、気付かないまま集計が狂います。

この記事では、基本の式から、判定がずれる原因と正しい書き方、条件付き書式・件数カウントまで、検証結果をもとに解説します。

 

結論:目的別に使う式の早見表

やりたいことに合う式を選んでください。A1は判定したいセルに置き換えて使います。

やりたいこと・困っていること使う式解説している見出し
入力があるときだけ処理したい(基本)=IF(A1<>””,”入力あり”,””)IF関数で「空白以外」を判定する基本の式
数式で「””」を返しているセルも空白として扱いたい=IF(A1<>””,…) のままでよい(ISBLANKは使わない)ケース1
スペースだけのセルを空白として扱いたい=IF(TRIM(SUBSTITUTE(A1,” ”,” “))<>””,…)ケース2
空白以外かつ「50以上」で合否を判定したい=IF(AND(ISNUMBER(A1),A1>=50),”合格”,”不合格”)AND関数と組み合わせる
空白以外のセルの数を数えたい(「””」は除く)=SUMPRODUCT(–(A1:A10<>””))空白以外のセルを数える
空白以外のセルに色を付けたい条件付き書式で =A1<>””空白以外のセルに色を付ける

 

 

IF関数で「空白以外」を判定する基本の式

「<>」は「等しくない」、「””」は「空の文字列」を表します。つまり A1<>”” は「A1が空の文字列ではない」という条件です。

=IF(A1<>””,”入力済み”,”未入力”)

A1の中身ごとの結果は次のとおりです。

A1の中身結果
Excel(文字)入力済み
0(数値)入力済み
何も入力していない未入力
数式 =”” の結果未入力
半角スペース1つ入力済み

下の2行が、この記事で扱う「判定のずれ」の入口です。詳しくは次の見出しで解説します。

 

A列に各種の値、B列に =IF関数 を入れた結果画面

空白以外のときだけ計算し、空白なら空白のままにする

A1に入力があるときだけB1を2倍し、A1が空白なら何も表示しない式です。

=IF(A1<>””,B1*2,””)

A1B1結果
済510
(空白)8(空白)

注意点として、この式が返す「空白」は、実際には空の文字列(””)という文字データです。そのため、結果のセルをSUM関数の範囲に含める分には無視されますが、「=C1+1」のように演算子で直接計算すると #VALUE! エラーになります。後続の計算で使う場合は、SUM関数で受けるか、同じようにIF関数で空白を除外してください。

 

見た目は空白なのに判定がずれる3つのケース

ここがこの記事で最も重要なポイントです。どのケースもエラーが出ないため、結果を見ただけでは誤りに気付けません。

ケース1:数式で「””」を返しているセル

=IF(B1=””,””,B1) のように、数式で空白を表示しているセルは「空白に見えるが、数式が入っているセル」です。このセルに対する判定は、使う関数によって正反対になります。

A1の中身A1<>””ISBLANK(A1)COUNTAで数えるか
何も入力していないFALSE(空白扱い)TRUE(空白扱い)数えない
数式 =”” の結果FALSE(空白扱い)FALSE(空白以外扱い)数える
半角スペースTRUE(空白以外扱い)FALSE(空白以外扱い)数える

「IF(A1<>””,…)」と「IF(NOT(ISBLANK(A1)),…)」は同じ動作だと説明されることがありますが、数式で「””」を返すセルに対しては結果が逆になります。ISBLANK関数は「何も入力されていないセル」だけをTRUEにするため、数式が入っていれば、表示が空白でも「空白ではない」と判定します。

見た目どおり「表示が空白なら空白」として扱いたいなら、A1<>”” を使うのが正解です。逆に「数式も含めて完全に何もないセル」だけを見分けたい場面では、ISBLANK関数を使います。

 

ケース2:スペースだけが入っているセル

入力を消すつもりでスペースキーを押したセルや、他システムから貼り付けたデータには、スペースだけが入っていることがあります。このセルは見た目は空白でも、A1<>”” では「空白以外」と判定されます。

スペースだけのセルも空白として扱うには、TRIM関数で前後のスペースを取り除いてから判定します。全角スペースが混じる可能性がある表では、先にSUBSTITUTE関数で全角スペースを半角に置き換えておくと確実です。

=IF(TRIM(SUBSTITUTE(A1,” ”,” “))<>””,”入力済み”,”未入力”)

式の中の1つ目の「” ”」は全角スペース、2つ目の「” “」は半角スペースです。

 

ケース3:空白セルは「0」と等しいと判定される

何も入力されていないセルを数値と比較すると、Excelは空白を0として扱います。そのため、=IF(A1=0,”ゼロ”,””) は、A1が空白でも「ゼロ」を表示します。

「0が入力されている」ことと「未入力」を区別したい場合は、空白以外の条件を先に加えます。

=IF(AND(A1<>””,A1=0),”ゼロ”,””)

 

AND関数・OR関数と組み合わせる

空白以外かつ50以上なら「合格」

よく紹介される =IF(AND(A1<>””,A1>=50),”合格”,”不合格”) には落とし穴があります。Excelでは、数値と文字列を比較すると、文字列のほうが大きいと判定されます。そのため、A1に文字列が入っていると「A1>=50」がTRUEになり、「合格」と判定されてしまいます。

A1の中身AND(A1<>””,A1>=50)の式ISNUMBERを使った式
60(数値)合格合格
45(数値)不合格不合格
(空白)不合格不合格
欠席(文字列)合格(誤判定)不合格
半角スペース合格(誤判定)不合格
文字列として入力された「40」合格(誤判定)不合格

最後の行は特に注意が必要です。CSVの取り込みや、表示形式が「文字列」のセルへの入力で、数字が文字列になっていると、40点でも合格になります。

数値だけを判定対象にするには、A1<>”” の代わりにISNUMBER関数を使います。

=IF(AND(ISNUMBER(A1),A1>=50),”合格”,”不合格”)

さらに、未入力のセルまで「不合格」と表示されるのを避けたい場合は、次のように3段階で判定すると実務で扱いやすくなります。

=IF(A1=””,”未入力”,IF(ISNUMBER(A1),IF(A1>=50,”合格”,”不合格”),”要確認”))

空白と数式の「””」は「未入力」、数値は合否、スペースや文字列、文字列の数字は「要確認」と表示されるため、入力ミスをその場で見つけられます。

どちらか一方でも入力があれば「入力済み」

A1とB1のどちらかに入力があれば「入力済み」、両方空白なら「未入力」と表示します。

=IF(OR(A1<>””,B1<>””),”入力済み”,”未入力”)

両方に入力があるときだけ「入力済み」にしたい場合は、ORをANDに変えます。

=IF(AND(A1<>””,B1<>””),”入力済み”,”未完了”)

複数セルがすべて入力済みかを判定する

判定したいセルが多い場合は、ANDを並べるよりCOUNTBLANK関数を使うほうが簡潔です。A2:E2の5セルがすべて入力済みなら「完了」と表示します。

=IF(COUNTBLANK(A2:E2)=0,”完了”,”未完了”)

COUNTBLANK関数は、数式で「””」を返しているセルも空白として数えます。そのため、数式の結果が空白のセルは「未入力」として扱われます。一方、スペースだけのセルは入力済みとして扱われる点に注意してください。

 

空白以外のセルに色を付ける(条件付き書式)

条件付き書式では、IF関数を使う必要はありません。数式の結果がTRUEになったセルに書式が付くため、条件の部分だけを入力します。

  1. 色を付けたい範囲を、左上のセルから選択します(例:A1からA10までドラッグ)。
  2. 「ホーム」タブの「条件付き書式」をクリックします。
  3. 「新しいルール」をクリックします。
  4. 「数式を使用して、書式設定するセルを決定」をクリックします。
  5. 数式の入力欄に「=A1<>””」と入力します。
  6. 「書式」をクリックします。
  7. 「塗りつぶし」タブで色を選び、「OK」をクリックします。
  8. 「新しい書式ルール」の「OK」をクリックします。

数式には、選択範囲の左上のセル(この例ではA1)を「$」なしで指定します。範囲をA10側から選ぶと基準のセルがずれ、意図しないセルに色が付くので注意してください。

スペースだけのセルに色を付けたくない場合は、数式を「=TRIM(SUBSTITUTE(A1,” ”,” “))<>””」にします。また、A列に入力がある行全体に色を付けたい場合は、表全体を選択したうえで「=$A1<>””」のように列だけを固定します。


空白以外のセルを数える・取り出す

空白以外のセルを数える

空白以外のセルを数える定番はCOUNTA関数ですが、COUNTA関数は数式で「””」を返しているセルも数えます。数式が入った表では、見た目の件数より多い数が返ります。

COUNTA関数の代わりに =COUNTIF(A1:A10,”<>”) を試す方も多いですが、この式も数式の「””」を数えてしまうため、同じ問題が残ります。表示が空白のセルを除いて確実に数えるには、SUMPRODUCT関数を使います。

=SUMPRODUCT(–(A1:A10<>””))

A1:A10の各セルに A1<>”” と同じ判定を行い、TRUEの数を合計する式です。「–」はTRUE・FALSEを1・0に変換する記号です。「–」がわかりにくい場合は、=SUMPRODUCT((A1:A10<>””)*1) と書いても同じ結果になります。TRUE・FALSEに1を掛けると、1・0に変わる仕組みです。

この式は、スペースだけのセルは入力ありとして数えます。スペースだけのセルも除く場合は、=SUMPRODUCT(–(TRIM(SUBSTITUTE(A1:A10,” ”,” “))<>””)) とします。

次の9セルで各式の結果を比べると、違いがよくわかります。

範囲の中身式結果
空白、数式の「””」、半角スペース、全角スペース、0、abc、60、45、文字列の「60」=COUNTA(範囲)8
=COUNTIF(範囲,”<>”)8
=SUMPRODUCT(–(範囲<>””))7
=SUMPRODUCT(–(TRIM(SUBSTITUTE(範囲,” ”,” “))<>””))5

COUNTAとCOUNTIFの8件は数式の「””」を含んだ件数、SUMPRODUCTの7件は数式の「””」を除きスペースは含んだ件数、5件はスペースも除いた件数です。

「数式の「””」は除きたいが、スペースは入力として扱う」という条件で、1列の範囲を数える場合は、=ROWS(A1:A10)-COUNTBLANK(A1:A10) でも同じ7件が求められます。スペースだけのセルまで除きたい場合には使えないので注意してください。

 

空白以外のセルだけを取り出す(Microsoft 365・Excel 2021以降)

FILTER関数が使える環境では、空白以外の値だけを別の場所に一覧表示できます。

=FILTER(A1:A10,A1:A10<>””)

結果は入力したセルから下へ自動的に広がって表示されます。表示先のセルに値が残っていると #SPILL! エラーになるため、下側を空けてから入力してください。

 

よくある質問

空白のセルを参照すると「0」と表示されます。空白のまま表示できますか?

「=A1」のように空白セルをそのまま参照すると、結果は0になります。=IF(A1<>””,A1,””) とすれば、A1が空白のときは空白、入力があるときはその値を表示します。

IFS関数でも「空白以外」の条件は書けますか?

書けます(Excel 2019以降、Microsoft 365)。ただしIF関数と同じく、文字列が「50以上」と判定される点は変わりません。数値かどうかの判定を条件に含めてください。

=IFS(A1=””,”未入力”,NOT(ISNUMBER(A1)),”要確認”,A1>=50,”合格”,TRUE,”不合格”)

LEN(A1)>0 でも判定できますか?

できます。文字数が0より大きいかどうかで判定するため、何も入力していないセルと数式の「””」はFALSE、スペースや0はTRUEとなり、A1<>”” と同じ結果になります。どちらを使っても構いませんが、式が短く意図が伝わりやすい A1<>”” をおすすめします。

 

まとめ

  • IF関数で「空白以外」を判定する基本の式は =IF(A1<>””,真の場合,偽の場合) です。
  • A1<>”” は数式の「””」を空白扱い、ISBLANK関数は空白以外扱いにします。見た目どおりに判定するならA1<>””を使います。
  • スペースだけのセルは空白以外と判定されます。空白扱いにするにはTRIM関数とSUBSTITUTE関数を組み合わせます。
  • AND(A1<>””,A1>=50) は文字列やスペースを「合格」と誤判定します。数値の判定にはISNUMBER関数を使います。
  • COUNTA関数と COUNTIF(範囲,”<>”) は数式の「””」も数えます。表示が空白のセルを除くならSUMPRODUCT関数を使います。
  • 条件付き書式ではIF関数は不要で、「=A1<>””」だけで空白以外のセルに色を付けられます。
編集長
古見遊 正

流通業で働きながら、2004年からWindowsを使い続けている80年代生まれのサラリーマン。ExcelとPowerPointを極め、仕事の効率化を追求中。苦手だったWordも克服中!Excelを使いこなせるだけで周囲から『神扱い』されるけれど、そのせいで『システムに詳しい人』だと勘違いされがち。でも、それが新しい知識を得るきっかけになった。そんな経験を活かして、Excel・PowerPoint・Word・Windowsの時短ワザ&仕事術を発信中!

古見遊 正をフォローする
Excel関数

コメント

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