Excel/VBA

囲まれた文字列を抽出する

何かと「/」で囲まれた文字列を抽出するシーンは多いと思います。自作すると複雑となりとても覚えきれないので自分用に作成しました。かなり需要のある機能だとおもうので、専用の関数を早く作ってほしいです、、、

左から1番目の文字列を抽出
=MID(A1, FIND("/", A1) + 1, IFERROR(FIND("/", A1, FIND("/", A1) + 1) - FIND("/", A1) - 1, LEN(A1) - FIND("/", A1)))

左記のような場合「oha-yo.com」を抽出します。

2番目の文字列を抽出

注意:末尾は必ず”/”で終了する事を前提にしています。そうしないと複雑になりすぎて、、、
また、2番目に相当する文字列が存在しない場合は空白とします

=IFERROR(MID(A1, FIND("/", A1, FIND("/", A1) + 1) + 1, FIND("/", A1, FIND("/", A1, FIND("/", A1) + 1) + 1) - FIND("/", A1, FIND("/", A1) + 1) - 1),"")
3番目の文字列を抽出
=IF(LEN(A1) - LEN(SUBSTITUTE(A1, "/", "")) < 3, "", MID(A1, FIND("/", A1, FIND("/", A1, FIND("/", A1) + 1) + 1) + 1, IFERROR(FIND("/", A1, FIND("/", A1, FIND("/", A1, FIND("/", A1) + 1) + 1) + 1) - FIND("/", A1, FIND("/", A1, FIND("/", A1) + 1) + 1) - 1, LEN(A1) - FIND("/", A1, FIND("/", A1, FIND("/", A1) + 1) + 1))))
最後の文字列を抽出
=IF(LEN(A1) = 0, "", TRIM(RIGHT(SUBSTITUTE(LEFT(A1, LEN(A1) - (RIGHT(A1, 1) = "/")), "/", REPT(" ", LEN(A1))), LEN(A1))))

B列の通り末尾の文字列を抽出します。

スポンサーリンク
タイトルとURLをコピーしました