「FIND」と「SEARCH」の違い - Googleスプレッドシート関数

「FIND」と「SEARCH」の違い - Googleスプレッドシート関数

文字列を検索する「FIND」と「SEARCH」の使い方の違いは、
大文字小文字を区別するならば「FIND」
ワイルドカードを使う場合は「SEARCH」
「*」や「?」などワイルドカード文字を検索する場合は「FIND」を使います

・関数FIND(読み方 - ファインド)
・書式=FIND(検索文字列,対象,開始位置)
・内容大文字小文字を区別して、特定の文字列がテキスト内で最初に現れる位置を返します。
・関数SEARCH(読み方:サーチ)
・書式=SEARCH(検索文字列,対象,開始位置)
・内容大文字小文字を区別せずに、特定の文字列がテキスト内で最初に現れる位置を返します。
「FIND」と「SEARCH」関数では、既定の言語の設定に関係なく、1 バイト文字も 2 バイト文字も、各文字が常に 1 つとして数えられます。
検索した文字が2つ以上存在する場合最初の1つの結果を出します

普通にひらがなや漢字など検索するならば使い方も結果も一緒ですが
使い分けるとしたら

SEARCHはワイルドカードが使えます
FINDでワイルドカード文字を検索できます

SEARCHは大文字と小文字は区別されません
FINDは大文字と小文字は区別します

例)「Albert Einstein」から「E」を検索
=FIND("E","Albert Einstein")
=8

=SEARCH("E","Albert Einstein")
=4

ワイルドカードとは
検索する文字列を「*」や「?」で任意の文字列で検索できます

基本的な使い方は
「*〇」:〇で終わる文字列
「〇*」:〇で始まる文字列
「*〇*」:〇を含むセルをカウントします

ワイルドカードは「*」複数「?」は1文字です
「?〇」:〇の前に1文字
「??〇」:〇の前に2文字
「〇???」:〇の後ろに3文字

SEARCH関数では「*」はあまり使うことが無いと思います
「?」は1文字なので使い方次第では便利です

例)メールアドレスのアカウントを取り出す場合
セル)A1に「12345@dw230.com」と入力されている場合

通常は
=MID(A1,1,SEARCH("@",A1)-1)
=12345
「SEARCH("@",A1)-1」と1つ文字を引いています

「?」を使えば
=MID(A1,1,SEARCH("?@",A1))
=12345

通常は「@」までを数えているので「@」の分1文字引きますが
「?@」とすることで「?」の分1文字引かれます


サンプル1
セルA1
https://dw230.jp/search/?q=FIND

=FIND("?",A1)
=25

=SEARCH("?",A1)
=1

FINDでは「?」の場所を検索して25文字目を取得
SEARCHでは「?」は任意の1文字なので1文字目を取得します
サンプル2
セルA2
https://dw230.jp/search/?key=SEARCH

セルA2からドメインを取り出します

FIND関数の場合
=MID(A2,FIND("//",A2)+2,FIND("/",A2,FIND("//",A2)+2)-FIND("//",A2)-2)
=dw230.jp

SEARCH関数の場合
=MID(A2,SEARCH("//",A2)+2,SEARCH("/",A2,SEARCH("//",A2)+2)-SEARCH("//",A2)-2)
=dw230.jp

どちらも同じ結果になります
サンプル3
セルA3
神奈川県横浜市港北区日吉本町

セルA3から県名を取り出します

FIND関数の場合
=MID(A3,1,FIND("県",A3))
=神奈川県

SEARCH関数の場合
=MID(A3,1,SEARCH("県",A3))
=神奈川県

どちらも同じ結果になります
サンプル4
セルA4
090-1234-5678

セルA4が携帯か固定電話かを取得

ワイルドカードを使うのでSEARCH関数を使います
=IF(IFERROR(SEARCH("0?0*",A4),0),"携帯","固定電話")
=携帯
(「0?0」で始まる携帯以外は固定電話になります)

未入力を非表示にする場合
=IF(A4="","",IF(IFERROR(SEARCH("0?0*",A4),0),"携帯","固定電話"))
SEARCHとよく使うエクセル関数
 LEN 文字列の文字数を取得します
 MID 指定された文字数の文字を取得します
 SUBSTITUTE 指定した文字を置換します


「FIND」と「SEARCH」の違い >HOME

Googleスプレッドシート関数

よく似た関数の違い

「AVERAGE」と「AVERAGEA」の違い  指定した範囲内のセルの平均値を返す関数の違い

「SUM」と「SUMIF」の違い  選択したセル、範囲指定したセルを合計する関数の違い

「NOW」と「TODAY」の違い  現在の日時を取得する関数の違い

「FIND」と「SEARCH」の違い  セル内の文字列を検索する関数の違い

「FIXED」と「ROUND」の違い  小数点以下の数字を桁数を指定して四捨五入する関数の違い

「LARGE」と「MAX」と「MAXA」の違い  指定した範囲から最大値を返す関数の違い

「SUBSTITUTE」と「REPLACE」の違い  文字列を別の文字列に置き換える関数の違い

「NE」と「EXACT」と「DELTA」の違い  2つの文字列が同一であるかを検証する関数の違い

「JOIN」と「TEXTJOIN」の違い  指定した区切り文字を追加して文字列を結合する関数の違い

「IMPORTHTML」と「IMPORTXML」の違い  WEBサイトからデータを取得する関数の違い

「TRUNC」と「ROUNDDOWN」の違い  指定した桁数以下の数値を切り捨てる関数の違い

「CEILING」と「ROUNDUP」の違い  数値を切り上げする関数の違い

(C) 2001-2023 Digital World