• ベストアンサー

右側から数えて、最初に出現する特定の文字に囲まれた文字を抽出するには?

右側から数えて、最初に出現する特定の文字に囲まれた文字を抽出するにはどうすればよいのでしょうか。 ■サンプル A1セルに、「nikkansports\sports\news\200\」の文字がある。 A2セルに、「sanspo\baseball\photo\42or以下\」の文字がある。  ※それぞれの対象文字は内容も文字数もばらばらです。  右側から数えて、最初に出現する \ から \ に囲まれた文字を抽出する。 ■結果 B1セルに、「200」 B2セルに、「42or以下」 という出力をしたいのですがどうすればよいのでしょうか。 できれば通常の関数で。困難であればVBA?マクロ(よくわかっていないのですが)でもよいです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

マクロの方が得意なので、マクロ版です B1セル =getVal(A1) B2セル =getVal(A2) としてください (エラー処理も入れておきました) Public Function getVal(strVal As String) As String Dim strOut As String Dim nPoL As Integer Dim nPoR As Integer getVal = "" nPoR = InStrRev(strVal, "\") If (0 = nPoR) Then Exit Function End If strOut = Left(strVal, nPoR - 1) nPoL = InStrRev(strOut, "\") If (0 = nPoL) Then Exit Function End If getVal = Mid(strOut, nPoL + 1) End Function

chips2star
質問者

お礼

早速の回答ありがとうございます。 完璧に結果を出すことができました。 ありがとうございました。

その他の回答 (1)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

=RIGHT(LEFT(A1,LEN(A1)-MATCH("\",INDEX(LEFT(RIGHT(A1,COLUMN(1:1))),),0)),MATCH("\",INDEX(LEFT(RIGHT(LEFT(A1,LEN(A1)-MATCH("\",INDEX(LEFT(RIGHT(A1,COLUMN(1:1))),),0)),COLUMN(1:1))),),0)-1) Web検索で下記ページがヒットしました。 しげちゃんさんの回答を使ってみました。 もっと短くできればいいのですが私の能力では無理です。 式の意味も理解できていませんが、上手く抽出できると思います。 文字列中の文字位置検索を右から行うには? http://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?print+200603/06030065.txt

chips2star
質問者

お礼

ありがとうございます。 ただ、上記内容をコピペしてもうまくいきませんでした。