Excelで文字列データの整形処理を行うために、FIND関数は必須です。
例えば「03-xxxxxxxx」「082-xxxxxxxx」といったデータで「-」(ハイフン)までの長さ・文字数が決まっていないときに、「-」の前だけを取り出したいといったときにFIND関数を使います。途中の「-」の位置を調べて、「-」の左・前だけを取得すればいいわけです。
このFIND関数について、
「excel find 2つ目の・を見つけたい」
といった検索でこのサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
「excel 関数 特定文字の2個目を算出」
といった検索でのアクセスもあります。
指定した文字の2つ目・2個目が、何文字目にあるのかを調べるには、どのような数式にすればいいのかを探している方による検索です。
FIND関数の基本
まずは、もう一度FIND関数単独の基本を確認しておきましょう。※A1セルから「-」が何文字目にあるかを調べる
結果を表示したいセルに
=FIND("-", A1)
という数式を入力する
例えばA1セルに、
「03-xxxx-xxxx」といった電話番号入力されているときに「=FIND("-", A1)」という数式は1つ目の「-」の位置を示す「3」を返し、
「082-xxxx-xxxx」と入力されていれば「-」は4文字目ですから「4」を返してきます。
実務ではこのFIND関数に、LEFT関数やMID関数などを組み合わせて、市外局番だけを取得したり、市外局番以降を取得したりといった数式にするわけです。
FIND関数で2つ目の位置を探す
で、今回の本題、指定した文字の2つ目は何文字目にあるのかを調べる数式です。※A1セルから2つ目の「-」が何文字目にあるかを調べる
結果を表示したいセルに
=FIND("-", A1, FIND("-", A1)+1)
という数式を入力する
FIND関数をネストして使えば、2つ目の位置を取得することが、2個目が何文字目なのか調べることが可能になります。
先の、
=FIND("-", A1)
という数式は、FIND関数の引数を2つしか使っていませんが、実はFIND関数には3つ目の引数があります。
FIND関数の第3引数には[開始位置]を指定することができます。
例えば
=FIND("-", A1, 4)
と指定すると、A1セルの4文字目以降で「-」が何文字目にあるのかを調べることができます。
ですから今回の例で2つ目の「-」の位置を調べるには、1つ目の「-」以降で「-」が何文字目にあるかを調べればいいわけです。それが、
=FIND("-", A1, FIND("-", A1)+1)
です。
外側のFIND関数の、第3引数「FIND("-", A1)+1」の「FIND("-", A1)」が、1つ目の「-」を探している箇所です。
その見つかった1つ目の「-」より後ろから2つめの「-」のハイフンを探したいので、
「FIND("-", A1)+1」を外側のFIND関数の第3引数に指定して
=FIND("-", A1, FIND("-", A1)+1)
としています。
ここでご紹介した、
=FIND("-", A1, FIND("-", A1)+1)
という数式の意味がなかなか納得できないという方は、
A1セルに「03-xxxx-xxxx」と入力して
=FIND("-", A1, 4)
=FIND("-", A1, 3)
が、それぞれどんな値を返してくるのか確認し、次に
=FIND("-", A1)+1
=FIND("-", A1)
が、どんな値を返してくるのかについてしっかり納得してから、
=FIND("-", A1, FIND("-", A1)+1)
=FIND("-", A1, FIND("-", A1))
をテストしてみることをおすすめします。
関数は手入力したほうが楽ですよ
上記の、
=FIND("-", A1, FIND("-", A1)+1)
のように、関数の中で関数を使うような場合、[関数の挿入][関数の引数]ダイアログから入力しようとすると、かなり面倒です。(できなくはないですが)
Office TANAKAの田中亨さんが『迷惑をかけないExcel』などでおっしゃるように、
「絶対に[関数の挿入]ダイアログボックスを使ってはいけません。」
とまでは、私は言いませんが、手入力するようにしたほうが、自信を持って自分の力で数式を作れるように早くなると考えています。
最終更新日時:2019-07-04 14:28
- Newer:Excelマクロ入門講座 2015-9-27(日)10:30より
- Older:最終行を取得するGASスクリプト
Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » FIND関数で2つ目の位置を調べる