●今回の関数は?
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 文字列関数専用メニュー
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image