40歳からExcelに挑戦!

Excel 関数 セル内の文字を分ける


こんばんは。雪ん子です。
お越しいただきありがとうございます。

このブログはExcelやAccessの備忘録です。

初心者なので、変なコードとか出てくるかもしれません( ノД`)
もっと良い方法があったら、どしどしコメント下さいね。

f:id:snow0303:20190704231103j:plain


関数を使って決まった文字で文を区切る


関数で決まった位置より前や後を取り出すことができます。

私がいじりたかったのは住所録。
ビル名が必要なかったので
「省きたいな」
と、思いました。

この住所録は番地とビル名の間が、全角スペースで区切られていたので、その全角スペースを目印にすれば、区切ることができそうなのでチャレンジしました。

ただ、ビル名の入力が無いもの(番地で終わっているもの)もあったので、それにも対応させています。



A1に入力されている内容

東京都千代田区雪ん子町1-1-1 雪ん子ビル

スペースの前を取り出す

=IF(COUNTIF(A1,"* *"),LEFT(A1,FIND(" ",A1)-1),A1)


=IF(COUNTIF(A1,"* *"),
A1にスペースが含まれているか判断


LEFT(A1,FIND(" ",A1)-1),
スペースが含まれていたら、スペースの一文字前(-1文字目)までを表示


A1)
スペースが含まれていなかったらA1そのままを表示

スペースの後

=IF(COUNTIF(A1,"* *"),MID(A1,FIND(" ",A1)+1,LEN(A1)-FIND(" ",A1)),"")


=IF(COUNTIF(A1,"* *"),
A1にスペースが含まれているか判断


MID(A1,FIND(" ",A1)+1,LEN(A1)-FIND(" ",A1)),
スペースが含まれていたら、A1のスペースの一文字後(+1文字目)から語尾までを表示

ちょっとややこしいので詳しく。
MID関数の作りは
MID(文字列, 開始位置, 文字数)
なので

  • MID(A1,
    A1の
  • FIND(" ",A1)+1,
    A1のスペースの一文字後(+1文字目)
  • LEN(A1)-FIND(" ",A1))
    LEN(A1)・・・A1のトータル文字数
    FIND(" ",A1))・・・スペースは何文字目か=先頭からスペース(スペースを含む)までの文字数
    ↓↓↓
    LEN(A1)-FIND(" ",A1))
    トータル文字数からスペースまでの文字数をマイナスする=スペース以降の文字数(取り出す文字数)


"")
スペースが含まれていなかったら何も表示しない

応用

=IF(COUNTIF(A1,"* *"),LEFT(A1,FIND(" ",A1)-1),A1)

=IF(COUNTIF(A1,"* *"),LEFT(A1,FIND(" ",A1)-1),A1)

とすれば、半角スペースの一文字前まで。


=IF(COUNTIF(A1,"* *"),LEFT(A1,FIND(" ",A1)-1),A1)

=IF(COUNTIF(A1,"* *"),LEFT(A1,FIND(" ",A1)),A1)

とすれば全角スペースまで取り出せます。