- 公開日:
エクセルで範囲内に文字があれば抽出する方法
この記事では、指定した範囲内に「文字が入力されている」「条件の文字が含まれている」場合に該当データを抽出する方法をご紹介します。
「カレンダーに入っている予定を抽出したい」「取引データから○○さんを抽出したい」などの場合にご活用ください。
また、「取引先」を条件に、該当する「取引内容」を抽出するといったことができる関数についても合わせてご説明していますので、ぜひご参考にしてください。
エクセルで範囲内に文字があれば抽出する方法
指定した範囲内のセルに文字が入力されている場合のみ、データ抽出する方法をご紹介します。

今回は上記画像の表の中から、「納品先」が入力されている場合のみ納品先データを抽出します。

任意のセル(例:E2セル)に「=IF(ISTEXT(B2),B2,"")」を入力し、Enterを押します。
数式については、以下の「範囲内に文字があれば抽出する数式について」セクションで詳しくご説明します。

入力した数式によって、E2セルにB2セルの「A支店」が抽出されました。
次に、数式を他のセルにもコピーすることで、B3セルからB8セルも判定します。
E2セル右下のフィルハンドルを選択し、E8セルまでドラッグします。

数式がE8セルまでコピーされました。
B3セルからB8セルまで、それぞれ対応するセルが判定され、正しくデータの抽出が行われました。
文字が入力されている場合のみ、データを抽出することができました。
範囲内に文字があれば抽出する数式について

上記「エクセルで範囲内に文字があれば抽出する方法」セクションで使用した「=IF(ISTEXT(B2),B2,"")」という数式についてご説明します。
まず、IF関数の書式は「=IF(論理式,値が真の場合,[値が偽の場合])」です。
「論理式」には、ISTEXT関数を用います。
ISTEXT関数の書式は、「=ISTEXT(テストの対象)」です。テストの対象で指定したセルに文字が入力されていれば「TRUE」、空白の場合「FALSE」が返ります。
そのため「テストの対象」には、文字が入力されているかを判定したいセル(B2)を入力します。
ただし注意点として、ISTEXT関数は文字列の判別を行う関数ですので、数値や日付が入力されている場合、正しく判定が行われません。
数値や日付データの抽出を行いたい場合には「ISNUMBER関数」を活用しましょう。
ISTEXT関数とISNUMBER関数はどちらも書式は同じですので、数式の「ISTEXT」を「ISNUMBER」に置き換えてください。
そして「値が真の場合」にも、「テストの対象」と同様のセルを指定することで、文字が入力されていればデータの抽出が行われます。
また「値が偽の場合」には、「""」を入力します。このようにすることで、文字が入力されていないセルを参照した場合には、空白が返されるようになります。
したがって今回の「=IF(ISTEXT(B2),B2,"")」は、「B2セルに文字が入力されていればB2セルのデータを抽出し、文字が入力されていなければ空白を返す」という意味になります。
その他、IF関数の詳細については以下の記事をご覧ください。
ExcelのIF関数の使い方|論理式の条件(IF文)によって処理を分岐
指定した文字が含まれていたら抽出する方法
入力されているデータの中から、指定した文字が含まれているデータのみ抽出する方法をご紹介します。

今回は上記画像の表の中から、「納品先」に「支店」という文字が含まれる場合のみ納品先データを抽出します。

任意のセル(例:E2セル)に「=IF(OR(ISNUMBER(SEARCH("*支店",B2)),ISNUMBER(SEARCH("支店*",B2))),B2,"")」を入力し、Enterを押します。
数式については、以下の「指定した文字が含まれていたら抽出する数式について」セクションで詳しくご説明します。

入力した数式によって、E2セルにB2セルの「A支店」が抽出されました。
次に、数式を他のセルにもコピーすることで、B3セルからB8セルも判定します。
E2セル右下のフィルハンドルを選択し、E8セルまでドラッグします。

数式がE8セルまでコピーされました。
B3セルからB8セルまで、それぞれ対応するセルが判定され、正しくデータの抽出が行われました。
特定の文字が含まれる場合のみ、データを抽出することができました。
指定した文字が含まれていたら抽出する数式について

上記「指定した文字が含まれていたら抽出する方法」セクションで使用した「=IF(OR(ISNUMBER(SEARCH("*支店",B2)),ISNUMBER(SEARCH("支店*",B2))),B2,"")」という数式についてご説明します。
IF関数の書式は「=IF(論理式,値が真の場合,[値が偽の場合])」です。
「論理式」には、OR関数、ISNUMBER関数、SEARCH関数を組み合わせます。
まず、1つ目の「(ISNUMBER(SEARCH("*支店",B2)」では、B2セルのデータが「○○支店」であるかどうかという条件を指定しています。
そして2つ目の「(ISNUMBER(SEARCH("支店*",B2)」では、B2セルのデータが「支店○○」であるかどうかという条件を指定しています。
この2つの数式をOR関数の入れ子「OR(ISNUMBER(SEARCH("*支店",B2)),ISNUMBER(SEARCH("支店*",B2)))」とすることで、B2セルのデータに「支店」が含まれる場合には「TREU」、含まれない場合に「FALSE」が返るようになります。
ISNUMBER関数の詳細やOR関数、SEARCH関数と組み合わせた使い方を詳しく知りたい方は、以下の記事をご覧ください。
ExcelのISNUMBER関数の使い方|セルの値が数値か判定する
そして「値が真の場合」にも、判定したいセル(B2)を入力することで、指定した文字が含まれていればデータの抽出が行われます。
また「値が偽の場合」には、「""」を入力します。このようにすることで、指定した文字が含まれないセルを参照した場合には、空白が返されるようになります。
したがって今回の「=IF(OR(ISNUMBER(SEARCH("*支店",B2)),ISNUMBER(SEARCH("支店*",B2))),B2,"")」は、「B2セルに支店という文字が含まれていればB2セルのデータを抽出し、含まれていなければ空白を返す」という意味になります。
条件に該当するデータを抽出する方法

INDEX関数とMATCH関数を組み合わせることで、上記画像のように指定した条件(例:青果店B)に対応するデータ(例:バナナ)を表から抽出できます。
詳しい方法については以下の記事でご紹介します。また記事内では、INDEX関数とMATCH関数以外の関数も組み合わせることで、抽出データの合計値を求める方法なども合わせてご説明しています。
取引相手を条件に商品を抽出したい場合や、条件に該当する取引金額の合計を求めたい際などに、ぜひご活用ください。