[エクセル上級] 文字列を特定の文字で分割

      2018/04/07

1

文字列を特定の文字(列)や改行などで分割する関数です。

SPONSORED LINK

n番目の位置,n-1番目の位置

今回の例では「/」で文字列を分割します。

3番目の文字列は、2番目と3番目の「/」に挟まれています。

2

n番目の文字列を検索

そこで、「n番目の文字列の検索」を使ってn番目とn-1番目の「/」の位置を探します。

[エクセル上級] n番目の文字列を検索
文字列から、特定の文字列を検索し、n番目に出現する位置を返す関数です。 文字列から文字列を検索 文字列から特定の文字列の位置を調べる場合、Excelでは FIND関数 ... 続きを読む

3

4

これで両端の「/」の位置が分かりました。

5

最初と最後を探す時のための修正

3番目はうまく検索できましたが、1番目と最後を検索するときはうまくいきません。

6

7

1番目の「aaa」には左側の「/」(0番目)がありませんし、5番目の「eee」には右側の「/」(5番目)がありません。

IFERROR関数 などでエラーが発生したときを分岐してもいいのですが、ここではエレガント(?)に両端に「/」を付加することで解決させます。
文字が1文字ずれるため、結果からは1文字引いています。(1文字ではなく文字列を検索する場合は、1の代わりに文字数 LEN(A5) を引きます。)

8

9

MID関数 で該当文字列の抜き出し

最後に MID関数 で該当の文字列を抜き出します。

10

うまく3番目の文字列が抜き出せました!

11

SPONSORED LINK

応用編1 すべてバラバラに

分割してバラバラになった文字列をすべて列挙したいなら、「/」の位置を順に並べましょう。

app1-1

セルE5: =FIND(CHAR(16),SUBSTITUTE(A&A&A,A,CHAR(16),C5))-1

app1-2

セルE6: =MID(A,E5+1,E6-E5-1)

応用編2 1セルで抜き出し

ごちゃごちゃにはなってしまいますが、先ほど「/」の位置を調べていたセルの計算内容をそのまま埋め込んでしまえば、1セルで分割結果を取得できる関数を作ることができます。

app2-1

セルF4: =MID(A$1,FIND(CHAR(16),SUBSTITUTE(A$3&A$1&A$3,A$3,CHAR(16),C4))-1+1,FIND(CHAR(16),SUBSTITUTE(A$3&A$1&A$3,A$3,CHAR(16),C5))-FIND(CHAR(16),SUBSTITUTE(A$3&A$1&A$3,A$3,CHAR(16),C4))-1)

itjo レスポンシブ 本文下

 - Excel
 - , , , , , , ,