Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » FIND関数で後ろ・右から文字を探して位置を取得する

FIND関数で後ろ・右から文字を探して位置を取得する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel関数 find 後ろから」
「エクセル find 右から」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスがあります。

FIND関数を使って、文字列の後ろ(右)から、ある文字を探して、何文字目にあるのか調べる方法を、探していた方による検索でしょう。

例えば、
  a-b-c-d
  aa-bb-cc
  aaa-bbb
のように、途中の出現回数や文字数が決まっていないときに、最後の「-」(ハイフン)が何文字目にあるかを取得するために、どのような数式にすればいいのかを探していたのだろうと推測しています。

FIND関数で後ろ・右から文字を探して位置を取得する数式

最初に、結論の数式をご紹介します。

▼A2セルに入力された文字列で最後の「-」が左から何文字目かを取得する数式
※A2セルに●は入力されていないという前提

=FIND("●", SUBSTITUTE(A2, "-", "●", LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))))

A2セルに入力されている文字列に「●」が含まれていないときに、上記の数式で、A2セルに入力されている文字列の最後の「-」が、何文字目かを取得できます。

[スポンサードリンク]

FIND関数で後ろ・右から文字を探して位置を取得する考え方

大切なのは、この数式が何をやっているかを理解することです。

上記の
「=FIND("●", SUBSTITUTE(A2, "-", "●", LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))))」
という数式は、以下の考え方で作られています。

「-」が全部でいくつあるかを調べる
 ↓
取得した数を使って最後の「-」を「●」に置き換える
 ↓
置き換えた「●」の位置をFIND関数を使って調べる

FIND関数で後ろ・右から文字を探して位置を取得する数式を実際に確認しましょう

実際にExcel上で数式を入力してみましょう。

A2セルに元の文字列が入力されているときに、B2セルとC2セルに途中の状態を計算して、D2セルに最後の「-」の位置を計算してみましょう。

まず、B2セルに「-」が、全部でいくつ存在するかを調べる数式
  =LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))
を入力します。

「=LEN(A2) - LEN(SUBSTITUTE(A2,

SUBSTITUTE関数で、「-」を削除した文字数「LEN(SUBSTITUTE(A2, "-", "")」を、元の文字数「LEN(A2)」から引き算すれば、A2セルに「-」が何文字存在しているかを調べられます。これが
  =LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))
の意味です。

結果は下図のとおりです。

「=LEN(A2) - LEN(SUBSTITUTE(A2,

つづいて、上記の数式でB2セルに計算されている「-」の数を使って、A2セルの文字列の最後の「-」を「●」に置換する数式
  =SUBSTITUTE(A2, "-", "●", B2)
をC2セルに入力します。

「=SUBSTITUTE(A2,

SUBSTITUTE関数の第4引数を指定すると、いくつ目に登場する文字を置換するのか、指定できます。

上記の数式では第4引数にB2セルが指定されているので、最後に登場する「-」だけが、下図のとおり「●」に置換されます。

「=SUBSTITUTE(A2,

最後に「●」の位置をFIND関数で調べる数式
  =FIND("●", C2)
をD2セルに入力します。

「=FIND(

これでD2セルに、A2セルに入力されている文字列のうち、最後の「-」が何文字目なのかを取得できます。

「=FIND(

FIND関数で後ろ・右から文字を探して位置を取得する数式を一つにまとめる

途中の計算を入れておく作業用セルを残しておけるのなら、上記のままでもOKですが、上記の数式を一つにまとめるなら以下の手順です。

最後に入力した「●」の位置を調べている数式
  =FIND("●", C2)
で、C2となっている部分に、C2セルに入力した数式の「=」より後ろ
  SUBSTITUTE(A2, "-", "●", B2)
を入れて、
  =FIND("●", SUBSTITUTE(A2, "-", "●", B2))
とします。

「=FIND(

つづいて、この
  =FIND("●", SUBSTITUTE(A2, "-", "●", B2))
で、B2となっている部分に、B2セルに入力した数式
  LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))
を入れて、
  =FIND("●", SUBSTITUTE(A2, "-", "●", LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))))
とします。

「=FIND(

これが、この記事の最初にご紹介した数式です。

この記事では最後に登場する「-」を「●」にしていますが、これは「●」である必要はありません。元の文字列に登場しない文字なら、なんでもOKです。ネット上の日本語情報では「CHAR(9)」を使っている事例をよく見かけますが、最初は違いがハッキリとわかる文字を使って理解するのがおすすめです。

最終更新日時:2021-09-01 01:13

[スポンサードリンク]

Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » FIND関数で後ろ・右から文字を探して位置を取得する

「文字列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.