「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","Alb
ert 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とよく使うエクセル関数