アフィリエイト広告を利用しています
G-QVESCNWRVH

2021年09月16日

Excel : 便利な関数 Find(b) 関数

Excel tips Find(b)関数.jpg

●今回の関数は?

Find(b) 関数

●どんな時に使う?

プログラムソースコードから特定の命令コードを見つけて、見つかったらパラメータをチェックしたりとか
住所の中に特定の文字列が含まれているかチェックするとか

それから、ほかの関数、たとえば、Left(b)関数やMid(b)関数, Right(b)関数と組み合わせて使うことがよくあります。

結構、特殊な用途で使いますが・・・ただ、Find(b)関数が無かったら困ることもあります・・・
私の仕事が特殊だから???

●関数の使い方

この Find(b) 関数は、3つの引数(パラメータ)を取ります。

あっ、ここで一つ注意を・・・
Find(b) 関数って書いていますが、実際には
 Find 関数
 Findb 関数
をまとめて表しています。

で、違いはって言うと・・・

どちらも、対象となる文字列について、見つけた文字の位置を桁単位で返してくるか、Byte単位で返してくるかの違いがあります。
通常は桁単位で返してもらった方が扱いやすいですね。
でも、時にはByte単位で返してもらう必要があるときもあります。 例えば、印字場所を確認したりとか・・・

この文字数Byte数の違いって分かりますか?

詳しくは、Byteとは?に割と詳しく書いていますので、こちらをご覧くださいね

要点だけ言えば、
桁数は文字の個数
Byte数は、全角文字なら2、半角文字なら1
と覚えておいてください。

さて、Find(b) 関数の使い方は・・・

Find([検索する文字列]、[検索される文字列]、[検索開始位置])
です。

分かりにくいかもと思います。
例えば、"いろはにほへとちりぬるをわかよたれそつねならむ"の中に"ぬ"は入ってるかな?何文字目かな?って知りたい時に
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ")
って書きます。
この関数の結果は、10ですね。 ちょうど10文字目に”ぬ”がありますかね。

この使い方を見て、あれって思った人・・・観察眼が鋭いですね〜
最初の説明では、パラメータは3つありましたよね。
でも、このいろはの例では2つしか指定していません。

何で?
それは、3つ目のパラメータは、省略できるんです。 省略したら・・・1が指定されたものとして・・・つまり最初から検索しろよって意味なんですよね。

だから、
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ"、1)
って書いたのと同じ意味なんです。

もし、
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ"、11)
って書いたらどうなるでしょう?

"いろはにほへとちりぬるをわかよたれそつねならむ"の11文字目以降に”ぬ”はありませんよね。
なので、エラー値が返ってきます。
その値は、#Value! ってなります。

まとめると、

=Find("い", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("ろ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("は", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("に", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 4
=Find("ほ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 5
=Find("へ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 6
=Find("と", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 7
=Find("ち", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 8
=Find("り", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 9
=Find("ぬ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 10

ってなります。

●注意すべき点は?

私が良く失敗するのは、一つ目のパラメータと二つ目のパラメータを逆に指定しちゃうことです。
どうしてかと言うと、VB(Visual Basic)とかVBAで、良く似た関数でINSTR関数ってのがあるんですが、この関数のパラメータは一つ目と二つ目がFind関数と逆なんです。
なんでー?って感じでしょ

まぁ、それは良いとして、逆に指定すると、

=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "い", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ろ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "は", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "に", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ほ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "へ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "と", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ち", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "り", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ぬ", 4)   ⇒ #VALUE!

ってなっちゃいます

この例なら間違えていることがすぐにわかりますが、一つ目も二つ目も両方ともセル参照や関数式なら、見つけるのは困難ですよ
●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー





この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/10971713

この記事へのトラックバック
ファン
検索
<< 2024年04月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリーアーカイブ
プロフィール
Y.Taki@AS400さんの画像
Y.Taki@AS400
IBM AS/400で稼働するシステムの開発・追加を担当して30年以上になります。使えば使うほどこの AS/400 が好きになりました。 こんなSEがいろいろな視点から様々な業務などについて語ります。
プロフィール