更新日:、 作成日:
エクセル SEARCH 関数:文字列の位置を検索する
はじめに
エクセルの SEARCH 関数の使い方を紹介します。
SEARCH 関数は検索ワードが見つかった位置を取得します。
=SEARCH("A","ABC") のようにして、A を ABC から検索して 1 を取得できます。
=SEARCH("Excel???",検索対象) のようにして、Excel の後ろに 3 文字以上あるときは 1 以上 を取得できます。
検索ワードが見つからないときはエラー #VALUE! になります。
大文字小文字を区別しないで検索します。ワイルドカードを使用できます。
SEARCH 関数の引数
SEARCH(検索ワード, 検索対象)
検索対象から検索ワードを大文字と小文字を区別しないで検索して、最初に見つかった位置を取得します。
SEARCH(検索ワード, 検索対象, 開始位置)
検索対象の開始位置から検索します。
引数「検索ワード」 | 検索する文字列を指定します。ワイルドカードを使用できます。 | スピル化 |
引数「検索対象」 | 検索対象となる文字列を指定します。この文字列の中から引数「検索ワード」が最初に見つかった位置が取得されます。 | スピル化 |
引数「開始位置」 | 省略できます。省略すると 1 が指定されます。 検索を開始する位置を指定します。最初の文字から検索するときは 1 を指定します。 | スピル化 |
スピル化:セルの範囲や配列を指定すると結果が「スピル」します。
引数「検索ワード」
使用できるワイルドカードには次のものがあります。
パターン | 説明 | 使用例 | 一致例 |
* | 任意の長さの文字 | "あ*" | あ, あい, あいう |
? | 任意の 1 文字 | "あ?" | あい, あか, あき |
~ | ワイルドカードの文字 * ? を検索する | "あ~?~*" | あ?* |
スポンサーリンク
使い方
SEARCH 関数の使い方を紹介します。
1 文字の検索ワードを検索する
A をセル「B3」の検索対象から検索します。
大文字小文字を区別しません。
複数文字の検索ワードを検索する
複数文字の検索ワードを検索対象から検索します。
ワイルドカードを使って検索する
*A* を検索対象から検索します。
*A* は A があるときは 1 を返します。
A* は AB や AC など A から続く文字と一致するので "A" で検索したときと同じ結果になります。
*A は A より前のすべての文字と一致するので A があるときは 1 を返します。
特定の文字で始まるか検索するには、下記の「高度な使い方」をご覧ください。
開始位置を指定して検索する
A を A2A45 から開始位置を指定して検索します。
検索ワードが空文字のときは開始位置を返します。
何番目を検索する
2 番目の A を A2A4A から検索します。引数「開始位置」に最初に検索した 結果 + 1 を入力して、2 番目の検索ワードを検索できます。
=SEARCH(B3,C3,SEARCH(B3,C3)+1)
=SEARCH(B3,C3,SEARCH(B3,C3,SEARCH(B3,C3)+1)+1)
何番目を指定するには下記の「高度な使い方」をご覧ください。
高度な使い方
SEARCH 関数と他の関数を組み合わせた使い方などを紹介します。
改行を検索する
セル内の改行文字を入力するには「CHAR 関数」を使用します。CHAR(10) がセル内の改行文字です。
他にも「CHAR 関数」を使用して、タブ文字など特殊文字を入力できます。
特定の文字で始まるか検索する
名前が E から始まるか検索します。「IFERROR 関数」を使用して、始まらないときに FALSE にできます。
=IFERROR(SEARCH("E",B4)=1,FALSE)
結果が 1 のとき、その文字から始まります。
右から検索する
最後の文字から左に向かって検索するには文字列を反転します。反転するには「スピル」を使用します。
「MID 関数」と「SEQUENCE 関数」を使用して、文字列を 1 文字ずつ逆から抽出します。それを「TEXTJOIN 関数」を使用して結合します。
反転した文字列を SEARCH 関数で検索して 文字数 - 結果 + 1 が後ろから検索した位置になります。「LEN 関数」を使用して文字数を取得できます。
何番目を指定して検索する
ラムダを使用して何番目の検索ワードを検索するには「REDUCE 関数」を使用します。複雑なので詳細は関数のページをご覧ください。
LAMBDA(total,x,
SEARCH($B$3,$C$3,total+1)))
「SEQUENCE 関数」にループする回数を入力して、その数だけ SEARCH 関数を繰り返し実行します。その 結果 + 1 を次の SEARCH 関数の引数「開始位置」に指定して、何番目の検索ワードを検索します。
SEQUENCE(B5) の部分に何番目の検索ワードを検索するかを入力します。
total+1 の部分で前回の検索結果 + 1 を開始位置にしています。
解説
大文字小文字を区別しないで検索します。ワイルドカードを使用できます。大文字小文字を区別して検索するには「FIND 関数」を使用します。
引数「検索ワード」が引数「検索対象」の先頭の文字にあるときは 1 を返します。
引数「検索ワード」が引数「検索対象」に複数存在するときは、左から検索して最初に見つけた文字の位置を返します。
引数「検索ワード」が空文字 "" や空のセルのときは、引数「開始位置」の値が返されます。引数「開始位置」を省略しているときは 1 です。
引数「検索ワード」が見つからなかったときはエラー #VALUE! になります。
引数「開始位置」が 0 以下や引数「検索対象」の文字数より大きいときはエラー #VALUE! になります。
スポンサーリンク