ExcelのIF関数で「文字が入っていたら」を判定する方法|空白以外・特定の文字・うまく判定されない原因まで

ExcelのIF関数で「文字が入っていたら」を判定する方法

ExcelのIF関数で「セルに文字が入っていたら○○と表示する」という条件分岐は、入力チェックや進捗管理表などで最もよく使われるテクニックのひとつです。

ただし、ひとくちに「文字が入っていたら」と言っても、「何か入力されていたら」「文字(テキスト)だけを判定したい」「特定の文字を含んでいたら」では使う数式が変わります。目的に合わない数式を使うと、数値や見えないスペースまで「入力あり」と判定されるなど、集計ミスの原因になります。

この記事では、目的別の数式をコピペで使える形で紹介したうえで、「思った通りに判定されない」ときの原因と直し方まで解説します。

ExcelのIF関数で「文字が入っていたら」

 

まず結論:やりたいこと別の数式早見表

急いでいる方は、次の表から目的に合う数式をコピーしてお使いください。セル番地(A1)とキーワードはご自身の表に合わせて書き換えてください。

やりたいこと数式
何か入力されていたら(数値・日付も含む)=IF(A1<>””, “入力済み”, “”)
文字(テキスト)だけを判定したい=IF(ISTEXT(A1), “文字あり”, “文字なし”)
特定の文字を含んでいたら=IF(ISNUMBER(SEARCH(“完了”, A1)), “含む”, “含まない”)
特定の文字と完全に一致したら=IF(A1=”済”, “完了”, “未完了”)
数値が入力されていたら=IF(ISNUMBER(A1), “数値あり”, “数値なし”)

それぞれの数式の意味と、使い分けの注意点を順番に見ていきます。

 

 

ExcelのIF関数でセルに文字が入っていたら判定する基本

IF関数の基本構文

IF関数は、条件(論理式)が成り立つかどうかで表示する結果を切り替える関数です。

=IF(論理式, 真の場合の値, 偽の場合の値)

「セルに何か入力されているか」を判定するには、論理式に A1<>”” と指定します。「<>」は「等しくない」、「””」は空(何もない状態)を表すので、「A1が空ではない=何か入力されている」という意味になります。

 

使用例:A列に入力したら隣のB列に「入力済み」と表示する

最もよく使われるのは、名簿や提出管理表で「A列に名前が入力されたら、隣のB列に自動でチェックを表示する」という形です。B2セルに次の数式を入力し、下の行へオートフィルでコピーします。

=IF(A2<>"", "入力済み", "")

偽の場合(未入力のとき)を「””」にしておくと、未入力の行は空欄のままになります。何百行もある表で「未入力」の文字がずらりと並ぶより、入力済みの行だけに表示が出るほうが見やすいため、実務ではこの形が基本です。

実際に入力した値ごとの判定結果は次のようになります。

A列の内容B列の判定結果
佐藤(文字列)入力済み
123(数値)入力済み
(何も入力していない)(空欄)

未入力の行に「未入力」と明示したい場合は、第3引数を書き換えて =IF(A2<>””, “入力済み”, “未入力”) とします。

 

注意:「A1<>””」は数値もスペースも「入力あり」と判定する

ここで重要なのが、A1<>”” は「文字だけ」を判定する数式ではないという点です。実際に検証すると、次のように判定されます。

A列の内容A1<>”” の判定
数値(123)や日付入力済み
スペースだけ(半角・全角とも)入力済み
数式の結果として “”(空文字)が返っているセル未入力

「氏名欄に文字が入っていたら」のつもりで作った表に、誤って数値やスペースが入力されても「入力済み」と判定されてしまいます。数値や日付を除外して「文字だけ」を判定したい場合は、次のISTEXT関数を使います。

 

 

文字(テキスト)だけを判定したい:ISTEXT関数

ISTEXT関数との組み合わせ

ISTEXT関数は、セルの値が文字列ならTRUE、それ以外(数値・日付・空白など)ならFALSEを返す関数です。IF関数と組み合わせると、「文字が入力されているときだけ」処理できます。

=IF(ISTEXT(A1), "文字あり", "文字なし")

この数式なら、数値の「123」や日付は「文字なし」と判定され、文字列だけを正しく拾えます。アンケートの自由記述欄や氏名欄など、「文字が入っているべき欄」のチェックに向いています。

1点だけ注意があります。ISTEXTは文字列であればTRUEを返すため、数式が返した空文字(””)も「文字列」として判定されます。見た目が空欄でも、そのセルに =IF(〜,〜,””) のような数式が入っていると「文字あり」になるので、数式入りの表では A1<>”” との併用を検討してください。

ISBLANK関数との違い

空白判定でよく登場するISBLANK関数は、「セルが完全に空(何も入力されていない)」ときだけTRUEを返します。ここには分かりにくい落とし穴があります。

別の数式が「””(空文字)」を返しているセルは、見た目は空白でもISBLANKでは「空白でない」と判定されます。一方、A1<>”” や A1=”” による判定では、空文字は「空」として扱われます。VLOOKUP関数などの結果を空文字で返している表では、この違いが判定ズレの原因になりがちです。見た目通りの「空白」を判定したい場合は、ISBLANKではなく A1=”” を使うのが安全です。

 

 

特定の文字が入っていたら判定する

「完了」「済」「至急」など、特定のキーワードを含むかどうかで処理を分けたい場合は、IF関数だけでは判定できません。論理式に「A1=”*完了*”」のようにワイルドカードを直接書いても正しく動作しないためです。次の2つの方法を使います。

 

方法1:SEARCH関数+ISNUMBER関数(定番)

A1セルに「完了」という文字が含まれているかを判定する数式です。

=IF(ISNUMBER(SEARCH("完了", A1)), "含まれる", "含まれない")

SEARCH関数は、文字が見つかった位置を数値で返します(「作業完了」から「完了」を探すと3)。見つからない場合は #VALUE! エラーになるため、ISNUMBER関数で「戻り値が数値かどうか」を判定し、数値なら「含まれる」と表示する仕組みです。

 

方法2:COUNTIF関数+ワイルドカード(短く書ける)

COUNTIF関数とワイルドカード「*」を組み合わせる方法もあります。「*完了*」は「前後にどんな文字があってもよいので、完了を含む」という意味です。

=IF(COUNTIF(A1, "*完了*")>0, "含まれる", "含まれない")

COUNTIFは「範囲内のセルを数える関数」として知られていますが、範囲だけでなく1つのセルを対象にしても利用できます。この式では「A1という1セルの中に、完了を含むものがいくつあるか(0か1)」を数え、1以上なら「含まれる」と判定しています。

式が短く読みやすいのが利点です。ただし、Excelのワイルドカードは文字列に対する機能のため、数値として入力されたセルは部分一致の対象になりません。たとえば数値の123に対して「*2*」で判定しても一致しません。数値も含めて「2を含むか」を判定したい場合は、数値も文字列扱いで検索できるSEARCH方式(方法1)を使ってください。

 

SEARCH関数とFIND関数の違い

SEARCHとよく似た関数にFINDがあります。どちらも「文字の位置」を返しますが、次の違いがあります。

項目SEARCHFIND
英字の大文字・小文字区別しない(「APPLE」で「apple」も一致)区別する
ワイルドカード(*・?)使える使えない

通常の業務では区別のゆるいSEARCHで十分ですが、商品コードなど大文字・小文字を厳密に区別したい場合はFINDに置き換えてください。なお、どちらの関数も全角と半角は別の文字として扱う点は共通です。

 

「含む」と「一致する」の違いに注意

論理式に A1=”済” と書いた場合は完全一致の判定になります。セルに「対応済」と入力されていても、「済」と完全一致ではないため条件は成立しません。「済という文字を含んでいたら」にしたい場合は、必ずSEARCH方式かCOUNTIF方式を使ってください。

 

 

思った通りに判定されないときのチェックリスト

数式は合っているはずなのに判定がおかしい――そんなときは、次の4点を疑ってください。

 

症状1:空白のはずなのに「入力あり」になる

セルにスペース(空白文字)だけが入力されている可能性が高いです。半角・全角を問わず、スペースは「文字」として扱われるため A1<>”” もISTEXTも「入力あり」と判定します。該当セルを選択して数式バーを確認するか、次の数式でスペースを除いた判定に切り替えます。

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

SUBSTITUTE関数で全角スペースを半角に置き換えたうえで、TRIM関数で余分なスペースを除去してから判定する数式です。

 

症状2:見た目は空白なのに「空白でない」と判定される

そのセルに、結果として「””」を返す数式が入っていないか確認してください。前述の通り、ISBLANK関数は数式が返した空文字を「空白でない」と判定します。A1=”” による判定に切り替えると、見た目通りに判定できます。

 

症状3:含んでいるはずなのに「含まれない」になる

検索する文字と、セル内の文字の全角・半角が食い違っている可能性があります。「A」(全角)と「A」(半角)は別の文字として扱われます。目視では気づきにくいので、入力規則で統一するか、ASC関数で半角に揃えてから判定してください。

 

症状4:オートフィルでコピーしたら判定がズレた

数式内のセル番地が意図せず動いていないか確認してください。基準にしたいセルが固定の場合は「$A$1」のように絶対参照にします。

 

 

応用:判定結果を業務に活かす3つのパターン

判定式が作れたら、実務では次のような形で組み込むのが定番です。

パターン1:未入力なら警告を表示する。提出管理表などで、真偽の順序を入れ替えて「未入力を目立たせる」使い方です。

=IF(A1="", "★未提出★", "")

パターン2:入力されていたら計算する。単価×数量のような計算式で、未入力行に0やエラーが並ぶのを防ぎます。

=IF(A1<>"", A1*B1, "")

パターン3:入力されていたらセルに色を付ける。これはIF関数ではなく「条件付き書式」の役割です。数式を使った条件付き書式に「=A1<>””」を設定すると、入力済みセルを自動で色分けできます。

 

 

よくある質問

Q. 数字が入っていたら、と判定できますか?

A. できます。ISNUMBER関数をIF関数の論理式に直接使い、=IF(ISNUMBER(A1), “数値あり”, “数値なし”) とします。文字列として入力された「123」(セル左寄せで表示される状態)は数値とは判定されない点に注意してください。

 

 

Q. 複数のキーワードのどれかを含んでいたら、と判定できますか?

A. OR関数で判定式を並べます。たとえば「完了」または「済」のどちらかを含む場合は、=IF(OR(ISNUMBER(SEARCH(“完了”,A1)), ISNUMBER(SEARCH(“済”,A1))), “対応済み”, “未対応”) とします。

 

Q. 1つのセルではなく、範囲のどこかに特定の文字があるかを調べられますか?

A. COUNTIF関数の範囲指定を使います。=IF(COUNTIF(A1:A20, “*完了*”)>0, “あり”, “なし”) とすると、A1〜A20のどこかに「完了」を含むセルが1つでもあれば「あり」と表示されます。

 

 

まとめ

ExcelのIF関数で「文字が入っていたら」を判定するときは、目的によって数式を使い分けるのがポイントです。

何か入力されていればよいなら A1<>””、数値を除いて文字だけ判定したいなら ISTEXT関数、特定の文字を含むかどうかは SEARCH+ISNUMBER(またはCOUNTIF+ワイルドカード)を使います。

判定がおかしいときは、スペースの混入・数式が返す空文字・全角半角の違いのいずれかが原因であることがほとんどです。この記事のチェックリストを見ながら、実際の表で確認してみてください。

編集長
古見遊 正

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

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

コメント

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