Excel関数で、文字列の右から(後ろから)対象文字を探して、指定範囲を抽出する方法
もくじ
Excel関連記事
Excel・Wordで値の貼り付けができるショートカットキー
ExcelのTEXT関数で今日の日付から何日後の年月日・曜日を取得する
phpで文字列が数字かどうかを判別するctype_digit
【Excel】重複がある一覧の中から対象のセルを探す方法
【Excel】重複のない一覧の中から、複数の対象のセルを探す方法
【Excel】手入力や関数での、セル内の文章を改行する方法
【Excel】MATCH関数とINDEX関数で、指定範囲内から自由にデータを取り出す
【Excel】SUMIF関数の文字列版を作る方法
【Excel】VLOOKUP関数で、重複する一覧から正しく該当行を検索する
右から(後ろから)の抽出はRIGHT関数でできる
文字列の右から(後ろから)の抽出は、RIGHT関数を使います。
特定文字を検索して、RIGHT関数で右から切り取り
特定文字が一か所しか出現しない場合は、LEN関数とFIND関数とRIGHT関数を組み合わせることで特定文字から右が抽出できます。
まずは、FIND関数で特定位置の検索をします。
この例では、A1にsample@yahoo.co.jpの値があるとし、検索文字列を「@」となっているものとします。
② LEN(A1) → 18
①で検索文字列である「@」の出現位置をFIND関数で検索します。この場合、7文字目に「@」が見つかります。
ですが、FIND関数は左から検索するので、そのままではRIGHT関数が使えません。
次に、対象文字列の文字数をLEN関数で、カウントします。
①で計算されたのは、「@」より前の文字数なので、「@」より後ろの文字数を計算するには、全体の文字数から(②)、検索文字列の出現位置①を引けば、計算できます。
その値をRIGHT関数で利用すると、右から切り取りできます。
特定文字が一か所しか出現しない場合は、これだけで抽出できます。
特定文字を検索して、REPLACE関数で置換
特定文字が一か所しか出現しない場合は、REPLACE関数とFIND関数を組み合わせることで、左から特定文字までを、空白で置換(削除)することにより、右を抽出できます。
まずは、FIND関数で特定位置の検索をします。これは上の例と同じです。
出現位置がわかったら、REPLACE関数で空白に置換します。
ショートカットキーで右から切り取る
例えば、下のような名前のリストがあるとします。
この中から名前だけを抽出したい場合は、ショートカットキーで簡単に名前だけ抽出できます。
まず、抽出結果を出力したい列の一番上のセルに「山田 太郎」さんの名前である、「太郎」を入力しておきます。
次に、「太郎」と入力されたセルを選択して、「Ctrl」+「E」キーを押すと…
このように、自動でひとつめのデータから法則性を見つけ出して、入力してくれます!
上の表は全角スペースで区切っていますが、半角スペースが混じっていても正しく抽出できました!
名前やメールアドレスの抽出なら、これでパッとできますね!
特定文字が複数出現する場合に、右から切り取る
特定文字が複数出現する場合には、工夫が必要です。
1. 特定文字の出現回数を数える
指定範囲を抽出したいなら特定文字の出現回数を数えましょう。
上で解説した通り、LEN関数を使うと文字列の文字数を出してくれます。
② LEN(SUBSTITUTE(A1,”<br>”,””)) → 7
③ (LEN(A1)-LEN(SUBSTITUTE(A1,”<br>”,””)))/4 → 2
例えば「<br>」が区切り文字だとしたら「<br>」をSUBSTITUTE関数で消す計算、①から②を引くと8となりますが、区切り文字の「<br>」が4文字なので、計算した値を4で割ります。
2. 取り出したい箇所に区切り文字に目印をつける
上の関数で区切り文字の出現回数がわかったので、一番最後の区切り文字が何個目になるかもわかりました。
こうなれば、区切り文字が複数あってもSUBSTITUTE関数で、最後の区切り文字に目印をつけられます。
その前に、SUBSTITUTE関数のおさらいをしておきましょう。
SUBSTITUTE関数の第4引数で、何番目に出現する検索文字列を置換するかを指定できます。
(指定しない場合は、全部置換されます)
上の関数で計算した、区切り文字の出現回数を指定すれば、最後の出現位置がわかるということです。
普段使わないような目印がいいので、ここでは「@」とします。
「1.区切り文字を数える」の関数と組み合わせます。
A1にあい<br>かきく<br>さしの値が、B1に上の関数の値(2)があるとします。
3.目印を頼りに切り取り(RIGHT関数)
目印をつけられたら、後は上の「特定文字を検索して、RIGHT関数で右から切り取り」でも「特定文字を検索して、REPLACE関数で置換」どちらを使っても大丈夫です。
・REPLACE(C1,1,FIND(“@”,C1,1),””)
コメント