BLOG ブログ


2023.03.07 TECH

エクセルで特定の文字から右側の情報を取得する(RIGHT関数, FIND関数, LEN関数, SUBSITUTE関数)

Webディレクターとしてサイトリニューアル案件を担当していると、既存サイトのページ移行作業として、大量のデータを扱う場面があります。大規模サイトだと1万ページ以上の移行となり、エクセルの関数がある程度扱えないと仕事になりません。

個人的によく利用するのが、URLの最後の「/」(スラッシュ)より右の文字列を取得するというテクニック。

URLで最後のスラッシュより右側を抜き出したい図

結論

下記の式を「B2」のセルに入力すれば、OK!

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

あとは、コピー&ペーストか、フィルハンドルをドラッグして数式を下にコピーするだけ。

RIGHT関数, FIND関数, LEN関数, SUBSITUTE関数の組み合わせで、URLの最後のスラッシュより右側の文字列を取得している図

RIGHT関数, FIND関数, LEN関数, SUBSITUTE関数の組み合わせと、なぜか「★」があるという変な式。
式を理解するのが面倒な人は、下記のサンプルをダウンロードしてください。

▶ サンプルファイル Download

「セル番号」や「/(スラッシュ)」を別の文字に書き換えれば、色々と流用できます。「★」は対象データの中で使われていない文字であれば「★」でなくても可。

時間のない人はここで、さようなら。

RIGHT関数とは

式の意味をきちんと理解したい人はここから読んでください。
まずは、「RIGHT関数」から。

「RIGHT関数」は、対象データの後ろから何番目の文字を取り出す関数です。

RIGHT関数の説明図

  • 第1引数:対象データ。抜き出す元データ。
  • 第2引数:後ろから何番目以降のデータを抜き出したいか。数字を入力。

例えば、「NorthDetail」という文字に対して、「Detail」だけを取り出したい場合、後ろから6番目を指定して第2引数に設定。

= RIGHT (A2,6)
RIGHT関数の実例を説明している図

後ろから6文字の「Detail」を抜き出すことができました。

FIND関数とは

「FIND関数」は、検索する文字列から対象の文字が何番目にあるかを教えてくれます。

FIND関数の説明図

  • 第1引数:検索したい文字を指定
  • 第2引数:対象データ。元データ
  • 第3引数:どの位置から検索するか。※省略可

例えば、「NorthDetail」という文字に対して、「D」がある場所(先頭から何番目)を知りたい場合。

= FIND ("D", A2)
FIND関数の実例を説明している図

「NorthDetail」の「D」は、 先頭 から「6番目」だとわかりました。

LEN関数とは

「LEN関数」は、指定したセルに入力されている文字列の文字数を返す関数です。

LEN関数の説明図

第1引数:文字数を知りたい「セル番号」を指定

= LEN (A2)
LEN関数の実例を説明している図

「NorthDetail」の文字数は「11」だとわかりました。

SUBSITUTE関数とは

SUBSTITUTE関数は、セル内の文字を別の文字に置き換えることができる関数です。

SUBSTITUTE関数の説明図

  • 第1引数:対象データ。元データ。
  • 第2引数:検索したい文字を指定
  • 第3引数:置換したい文字を指定
  • 第4引数:置換対象を指定 ※省略可。ただし、今回は必要です。
= SUBSTITUTE (A2,"/","★",5)
SUBSTITUTE関数の実例を説明している図

セル「A2」の5番目の「 / 」を「 ★ 」に置換できました。

【最後】特定の文字から右側の情報を取得する

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

上記で説明した「RIGHT関数」「FIND関数」「LEN関数」「SUBSITUTE関数」を理解できれば、今回の式を読み解くことができます。

やりたいこと

https://www.northdetail.co.jp/blog/exel/2023/2/28.html
赤字の部分を抜き出したい。

Step1:最後尾のスラッシュ(/)を「★」に変える

https://www.northdetail.co.jp/blog/excel/2023/228.html

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

LEN関数を利用して、全体の文字数からスラッシュを空白に置換した文字数を引くとスラッシュの数を取得。
SUBSTITUTE関数で、最後尾の「/」を「★」に置換。

Step2:「★」が全体の中で何文字目にあるかを算出

https://www.northdetail.co.jp/blog/excel/2023/228.html

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

FIND関数を利用して、全体の文字数から「★」が何番目かを調べる。

Step3:全体の文字数から「★」の位置(順番)の差を求める

https://www.northdetail.co.jp/blog/excel/2023/2★28.html

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

LEN関数で全体の文字数を取得して、STEP2で取得した「★」の位置の差を求める。

Step4:左からStep3で求めた文字数を取得する

https://www.northdetail.co.jp/blog/excel/2023/2★28.html

=RIGHT(A2,LEN(A2)-FIND("★",SUBSTITUTE(A2,"/","★",LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))

RIGHT関数で、STEP3で取得したの位置から右側を取得。

以上で、解説はおしまいです。

あとがき

WEBディレクターといえば、スケジュール管理や社内調整、顧客折衝などコミュニケーションがメインではあるものの、データを扱うことも多く、効率的な業務が必要となります。

エクセルに加えて、コマンド操作、VBA、マクロなども使いこなすことができると業務の範囲を広げることができます。非エンジニアとしては苦手な分野ではありますが、少しづつ勉強して得た知識や技術をブログで紹介したいと思います。


一覧に戻る


LATEST ARTICLE 最新の記事

CATEGORY カテゴリー