Excel:セルに数式が含まれている場合 例

  • これを共有
Michael Brown

このチュートリアルでは、「Excel if contains」式の例をいくつか紹介し、対象セルに必要な値が含まれている場合に別の列に何かを返す方法、部分一致で検索する方法、ANDだけでなくORで複数の条件をテストする方法などを解説しています。

Excelで最も一般的な作業の1つは、セルに目的の値が含まれているかどうかを確認することです。 どのような値が含まれるのでしょうか? あらゆるテキストや数値、特定のテキスト、またはまったくない値(空のセルは不可)です。

Excelの「If cell contains」式には、求める値によっていくつかの種類があります。 一般に、IF関数を使用して論理テストを行い、条件を満たした場合(セルに含まれる)には1つの値を、条件を満たさなかった場合(セルに含まれない)は別の値を返します。 以下の例は、最も頻繁に発生するシナリオを網羅しています。

    セルに何らかの値が含まれている場合

    まずは、テキスト、数値、日付など、あらゆるものが含まれるセルを検索する方法を見てみましょう。 ここでは、空白でないセルをチェックする簡単なIF式を使用します。

    IF( セル "", 戻り値 , "")

    例えば、同じ行のA列のセルに何らかの値がある場合にB列に「空白でない」と返すには、B2に次の数式を入力し、右下の小さな緑の四角をダブルクリックして数式を列方向にコピーします。

    =IF(A2"", "Not blank", "")

    結果はこのような感じになります。

    セルにテキストが含まれている場合

    数字や日付を無視してテキスト値を持つセルのみを検索したい場合は、IFとISTEXT関数を組み合わせて使用します。 以下は、対象セルが以下を含む場合に別のセルで何らかの値を返す一般的な数式です。 任意テキスト :

    IF(ISTEXT()の場合 セル ), 戻り値 , "")

    仮に、A列のセルにテキストがある場合にB列に「はい」という文字を挿入したいとします。 これを実現するには、B2に次の数式を記述します。

    =IF(ISTEXT(A2), "Yes", "")

    セルに数値が含まれている場合

    同様に、数値(数字や日付)を含むセルを特定するには、IF関数とISNUMBERを使用します。

    IF(ISNUMBER() セル ), 戻り値 , "")

    次の数式は、A列の対応するセルに任意の数値が含まれている場合、B列に「はい」を返します。

    =IF(ISNUMBER(A2), "Yes", "")

    セルに特定のテキストが含まれている場合

    特定のテキスト(または数字や日付)を含むセルを見つけるのは簡単です。 対象セルに目的のテキストが含まれているかどうかをチェックする通常のIF式を記述し、返すべきテキストを value_if_true の議論になります。

    IF( セル =" テキスト ", 戻り値 , "")

    例えば、セルA2に「りんご」が入っているかどうかを調べるには、次のような数式を使用します。

    =IF(A2="apples", "Yes", "")

    セルに特定のテキストが含まれていない場合

    もし、逆の結果、つまり、対象セルに指定されたテキスト("apples")が含まれていない場合、別の列に何らかの値を返したい場合は、次のいずれかを行ってください。

    に空文字列("")を入力します。 value_if_true 引数で、返すべきテキストを value_if_false の議論になります。

    =IF(A2="apples", "", "Not apples")

    または、「not equal to」演算子を入れる。 論理テスト で返すべきテキストを value_if_trueを指定します。

    =IF(A2 "apples", "Not apples", "")

    いずれにせよ、この計算式ではこのような結果になります。

    セルにテキストが含まれる場合:大文字と小文字を区別する数式

    大文字と小文字を強制的に区別させるには、2つの文字列が大文字と小文字を含めて完全に等しいかどうかを調べるEXACT関数を使用します。

    =IF(EXACT(A2, "APPLES"), "Yes", "")

    また、あるセル(例えばC1)にモデルの文字列を入力し、セル参照を$記号で固定($C$1)し、そのセルと対象セルを比較することもできます。

    =IF(EXACT(A2,$C$1), "Yes", "")

    セルに特定の文字列が含まれる場合(部分一致)

    この例では、与えられた文字や部分文字列がセルの内容の一部であるかどうかを調べるために、3つの異なる関数を使用します。

    if(isnumber(search(" テキスト" , セル )), 戻り値 ,"")

    内側から外側への働きかけは、以下の通りです。

    • SEARCH関数は、文字列を検索し、見つかった場合は最初の文字の位置を、そうでない場合は#VALUE!エラーを返します。
    • ISNUMBER関数は、SEARCHが成功したか失敗したかをチェックします。 SEARCHが何らかの数値を返した場合、ISNUMBERはTRUEを返します。 SEARCHがエラーになった場合、ISNUMBERはFALSEを返します。
    • 最後に、IF関数は、論理テストがTRUEであるセルについては指定された値を返し、そうでない場合は空文字列("")を返す。

    そして次に、この一般的な数式が実際のワークシートでどのように機能するかを見てみましょう。

    セルに特定のテキストが含まれている場合、別のセルに値を入れる

    A列に注文のリストがあり、特定の識別子、例えば「A-」を持つ注文を見つけたいとします。 このタスクは、次の数式で達成できます。

    =IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")

    数式に文字列をハードコードする代わりに、別のセル(E1)に文字列を入力し、そのセルを数式で参照することができます。

    =IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")

    数式が正しく動作するように、文字列を含むセルのアドレスを必ず$記号でロックしてください(絶対セル参照)。

    セルに特定のテキストが含まれている場合、それを別の列にコピーする

    有効なセルの内容を他の場所にコピーしたい場合は、評価されたセル(A2)のアドレスを value_if_true の議論になります。

    =if(isnumber(search($e$1,a2)),a2,"")

    下のスクリーンショットはその結果です。

    セルに特定のテキストが含まれる場合:大文字と小文字を区別する数式

    上記の2つの例では、数式は大文字と小文字を区別しません。 大文字と小文字を区別するデータを扱う場合は、SEARCHではなくFIND関数を使用して、文字の大文字と小文字を区別してください。

    例えば、以下の式は、小文字の「a-」を無視して大文字の「A-」の注文のみを識別します。

    =IF(ISNUMBER(FIND("A-",A2)), "Valid","")

    セルに多数のテキスト文字列のいずれかが含まれている場合(ORロジック)

    検索対象の多くのもののうち、少なくとも一つを含むセルを特定するには、次のいずれかの数式を使用します。

    IF OR ISNUMBER SEARCH 式

    最も明白な方法は、部分文字列を個別にチェックし、少なくとも1つの部分文字列が見つかった場合に、IF式の論理テストでOR関数がTRUEを返すようにすることである。

    if(or(isnumber(search(") ストリングス1 ", セル )), isnumber(search(" ストリングス2 ", セル ))), 戻り値 , "")

    A列にSKUのリストがあり、「ドレス」または「スカート」のどちらかを含むものを見つけたいとします。 この数式を使用することで実行させることができます。

    =IF(OR(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("skirt",A2))), "Valid","")

    この式は、いくつかの項目に対してはかなり有効ですが、多くの項目をチェックしたい場合には、確かに向かない方法です。 この場合、次の例に示すように、SUMPRODUCT関数を使用する方が良い方法でしょう。

    SUMPRODUCT ISNUMBER SEARCH式

    複数のテキスト文字列を扱う場合、それぞれの文字列を個別に検索すると、数式が長くなりすぎて読みにくくなります。 よりエレガントな解決策は、ISNUMBER SEARCHの組み合わせをSUMPRODUCT関数に組み込み、結果がゼロより大きいかどうかを確認することです。

    sumproduct(--isnumber(検索)() ストリングス , セル )))>0

    例えば、セルD2:D4に入力された単語のいずれかがA2に含まれているかどうかを調べるには、次の数式を使用します。

    =SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0

    また、検索する文字列を含む名前付き範囲を作成したり、数式で直接単語を指定することもできます。

    =SUMPRODUCT(--ISNUMBER(SEARCH({"dress", "skirt", "jeans"},A2)))>0

    いずれにせよ、このような結果になります。

    より使いやすい出力にするために、上記の数式をIF関数に入れ子にして、TRUE/FALSEの値の代わりに独自のテキストを返すことができます。

    =IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")

    この式の仕組み

    この例では、検索結果は {TRUE;FALSE;FALSE} のような配列で表されます。 セルに指定した文字列が少なくとも一つ含まれていれば、配列には TRUE が含まれます。 単項演算子 (--) は TRUE / FALSE をそれぞれ 1 と 0 に強制し、配列は次のようになります。{最後に、SUMPRODUCT関数で数値を足し算して、結果が0より大きいセルを選び出します。

    セルに複数の文字列が含まれる場合(AND論理)

    指定した文字列をすべて含むセルを探したいときは、すでにおなじみのISNUMBER SEARCHとIF ANDの組み合わせで検索します。

    if(and(isnumber(search(") ストリングス1 ", セル )), isnumber(search(" ストリングス2 ", セル ))), 戻り値 ,"")

    例えば、「dress」と「blue」の両方を含むSKUは、この計算式で見つけることができます。

    =IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2))), "Valid","")

    または、文字列を別々のセルに入力し、計算式の中でそれらのセルを参照することもできます。

    =IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Valid ","")

    別の方法として、各文字列の出現回数をカウントし、それぞれのカウントが0より大きいかどうかをチェックすることができます。

    =IF(AND(COUNTIF(A2, "*dress*")>0,COUNTIF(A2, "*blue*")>0), "Valid","")

    結果は上のスクリーンショットに示すようになります。

    セルの値によって異なる結果を返す方法

    対象列の各セルを別の項目のリストと比較し、一致するごとに異なる値を返したい場合は、次のいずれかの方法を使用します。

    ネストされたIF

    ネストされたIF式のロジックは、次のようにシンプルです。別々のIF関数を使って各条件をテストし、その結果に応じて異なる値を返します。

    IF( セル =" ルックアップ_テキスト1 ", " もどる _ テキスト1 ", IF( セル =" ルックアップ_テキスト2 ", " もどる _ テキスト2 ", IF( セル =" ルックアップ_テキスト3 ", " もどる _ テキスト3 ", "")))

    A列に項目のリストがあり、B列にその略語を表示させたいとします。これを実現するには、次の式を使用します。

    =IF(A2="apple", "Ap", IF(A2="avocado", "Av", IF(A2="banana", "B", IF(A2="lemon", "L", ""))) ))

    ネストされたIFの構文とロジックの詳細については、ExcelのネストされたIF - 1つの数式に複数の条件 を参照してください。

    ルックアップ式

    よりコンパクトで理解しやすい数式をお探しの場合は、ルックアップと戻り値を垂直配列定数として供給するLOOKUP関数を使用してください。

    ルックアップ( セル , {" ルックアップ_テキスト1 ";" ルックアップ_テキスト2 ";" ルックアップ_テキスト3 ";...}, {" もどる _ テキスト1 ";" もどる _ テキスト2 ";" もどる _ テキスト3 ";...})

    正確な結果を得るためには、必ずルックアップ値を アルファベット順 を、AからZまで。

    =LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})

    ネストされたIFと比較すると、Lookup式にはもう一つ利点があります。 ワイルドカード文字 であるため、部分一致を識別することができる。

    例えば、A列に数種類のバナナが含まれている場合、「*banana*」を調べると、そのようなセルすべてに対して同じ略語(「B」)が返されるようにすることができる。

    =LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})

    詳しくは、入れ子IFの代替としてのLookup formulaをご覧ください。

    Vlookup式

    可変データセットを扱う場合、例えば、別々のセルに一致するリストを入力し、Vlookup式を使用してそれらを取得する方が便利な場合があります。

    =vlookup(a2, $d$2:$e$5, 2,false )

    詳しくは、Excel VLOOKUPチュートリアル(初心者向け)をご覧ください。

    次週も引き続き、Excelの「セルに値が含まれている場合」の計算式について、関連するセルのカウントや合計、セルを含む行全体のコピーや削除などをご紹介します。 どうぞご期待ください。

    練習用ワークブック

    Excel セルが含まれている場合 - 数式の例 (.xlsx ファイル)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。