エクセル 文字列やセルを検索する

はじめに

エクセルの文字列を検索する方法を紹介します。

=XLOOKUP(A1,B1:B3,C1:C3) のようにして、セル「A1」の値を B 列から検索して最初に一致する C 列の値を抽出できます。

=FILTER(A1:A3,B1:B3="エクセル") のようにして、B 列が「エクセル」のセルに対応する A 列の範囲を抽出できます。

=FIND("A",A1) のようにして、セルの中にある A の文字の位置を検索できます。

範囲内に文字があるかどうかや、特定の文字が入っているセルなどを検索できます。

文字列を抽出したいときは「文字列を抽出する」をご覧ください。
  • 目次
    • セルを検索して抽出する
    • セルを検索して抽出する、2021 以降
    • セルを検索して抽出する、2019 以前
    • セルが存在するか検索する
    • 文字列を検索する

セルを検索して抽出する

セルを検索して抽出するには「FILTER 関数」を使用します。

下記で紹介している「セルを検索して抽出する、2021 以降」や「セルを検索して抽出する、2019 以前」の方法も「FILTER 関数」でできます。

この関数は 365 または 2021 から使用できます。

値を検索して抽出する

名前が エクセル の値を抽出します。

=FILTER(D3:D7,B3:B7="エクセル")
  • 第 1 引数に「結果範囲」を入力します。
  • 第 2 引数に「条件」を入力します。
29

条件に一致するセルの範囲を抽出する

値が 30 以上の行を抽出します。

=FILTER(B3:D7,D3:D7>=30)
  • 第 1 引数に「結果範囲」を入力します。
  • 第 2 引数に「条件」を入力します。
12
複数条件の入力など詳しくは「FILTER 関数」をご覧ください。

結果が複数のセルに表示されます。これはスピルという機能によるものです。

詳しくは「スピル、動的配列数式の使い方」をご覧ください。

特定の文字が入っている行を抽出する

名前に E の文字が入っている行を抽出します。「FIND 関数」または「SEARCH 関数」を使用して特定の文字が入っているか部分一致で検索できます。

  • FIND 関数:大文字小文字を区別します。
  • SEARCH 関数:大文字小文字を区別しません。
=FILTER(B3:D7,IFERROR(FIND("E",B3:B7),FALSE))
=FILTER(B3:D7,IFERROR(SEARCH("E",B3:B7),FALSE))

検索値が見つからないときはエラーになるので「IFERROR 関数」から FALSE にして、含めないようにできます。

14

最初の行だけ抽出する

FILTER 関数」は条件に一致するすべての値を取得します。最初に見つかった値だけを取得するには「INDEX 関数」を使用します。

値が 30 以上の最初の行を抽出します。「INDEX 関数」を使用して何番目の行か指定できます。

=INDEX(FILTER(B3:D7,D3:D7>=30),1,0)
=INDEX(FILTER(B3:D7,D3:D7>=30),2,0)
=FILTER(B3:D7,D3:D7>=30)
19

または、下記の「セルを検索して抽出する、2021 以降」や「セルを検索して抽出する、2019 以前」方法で行います。

セルを検索して抽出する、2021 以降

抽出されるのは 1 つのセルや 1 行または 1 列の範囲です。複数のセルの範囲を抽出するには下記の「セルの範囲を抽出する」をご覧ください。

この方法は 365 または 2021 から使用できます。

セルを検索して抽出するには「XLOOKUP 関数」を使用します。

値を検索して抽出する

No. を検索して名前を抽出します。

=XLOOKUP(B8,$B$3:$B$5,$C$3:$C$5)
  • 第 1 引数に「検索値」を入力します。
  • 第 2 引数に「検索範囲」を入力します。
  • 第 3 引数に「結果範囲」を入力します。
8

特定の文字が入っているセルを検索して抽出する

E の文字が入っているセルを検索して名前を抽出します。

=XLOOKUP("*E*",B3,D3:D3,,2)
  • 第 1 引数にワイルドカードを入力します。
  • 第 5 引数に 2 を入力してワイルドカードを有効にします。
26
見出しから検索するなど詳しくは「XLOOKUP 関数」をご覧ください。

セルの範囲を抽出する

第 3 引数にバージョンと個数の複数列を指定してセルの範囲を抽出します。

=XLOOKUP(B8,$B$3:$B$5,$D$3:$E$5)

結果がセルの範囲になるので「SUM 関数」などの引数に指定できます。

=SUM(XLOOKUP(B11,$B$3:$B$5,$D$3:$E$5))
11

結果が複数のセルに表示されます。これはスピルという機能によるものです。

詳しくは「スピル、動的配列数式の使い方」をご覧ください。

セルを検索して抽出する、2019 以前

抽出されるのは 1 つのセルです。複数のセルの範囲を抽出するには下記の「セルの範囲を抽出する」をご覧ください。

この方法はすべてのバージョンで使用できます。

セルを検索して抽出するには「INDEX 関数」と「MATCH 関数」を使用します。

=INDEX(対象範囲, MATCH(検索値, 検索範囲, 0), 列番号)

列番号に対象範囲の何列目を抽出するか番号を入力します。

値を検索して抽出する

No. を検索して名前を抽出します。

=INDEX($B$3:$E$5,MATCH(B8,$C$3:$C$5,0),1)
1

特定の文字が入っているセルを検索して抽出する

E の文字が入っているセルを検索して名前を抽出します。

=INDEX(B3:D3,MATCH("*E*",B3,0),3)

MATCH 関数」の引数「検索値」にワイルドカードを入力します。

27
見出しから検索するには「INDEX と MATCH 関数を組み合わせる」をご覧ください。

セルが存在するか検索する

セルの範囲内に文字が入っているかなどを検索するには「COUNTIF 関数」を使用します。

セルの範囲に文字があるかをカウントします。条件に =* を入力します。

=COUNTIF(B3:B5,"=*")
24

A の文字が入っているセルがあるかをカウントします。条件に =*A* を入力します。

=COUNTIF(B3:B6,"=*A*")

大文字と小文字を区別しません。

25
文字列かどうかや空白など、特定の値を条件にする方法は「COUNTIF 関数」にまとめています。

IF 関数」を使用してセルが存在するときと、見つからないときの処理を入力できます。

=IF(COUNTIF(B3:B5,"=*"),"存在する","見つからない")

文字列を検索する

セルの中にその文字列があるか検索するには「FIND 関数」または「SEARCH 関数」を使用します。

  • FIND 関数:大文字小文字を区別します。
  • SEARCH 関数:大文字小文字を区別しません。

文字列を検索する

ABCDE の中に 検索ワード が何文字目にあるか位置を検索します。

=FIND(B3,C3)
=SEARCH(B4,C4)
23

見つからないときにエラーにしたくないときは「IFERROR 関数」を使用します。

=IFERROR(FIND(B3,C3),FALSE)
=IFERROR(SEARCH(B4,C4),FALSE)

IF 関数」を使用してセルが存在するときと、見つからないときの処理を入力できます。

=IF(IFERROR(FIND(B3,C3),FALSE),"存在する","見つからない")
=IF(IFERROR(SEARCH(B3,C3),FALSE),"存在する","見つからない")

この結果から特定の文字列の範囲を抽出したり置換したりできます。詳しくは次のページをご覧ください。

特定の文字で始まるか検索する

名前が E から始まるか検索します。「IFERROR 関数」を使用して、始まらないときに FALSE にできます。

=IFERROR(FIND("E",B3)=1,FALSE)
=IFERROR(SEARCH("E",B4)=1,FALSE)

結果が 1 のとき、その文字から始まります。

30