Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
文字列から抽出したい
投稿日時: 23/01/14 15:35:28
投稿者: kazumi-uchita

和歌山県20221209作業無氏名A
岩手県20230112作業有氏名BB
津市20230124作業有氏名C
 
この様な文字列から
和歌山県  20221209  作業無  氏名A
岩手県   20230112 作業有  氏名BB
津市 20230124  作業有  氏名C
の様に抽出したいです。
left・mid・right関数なぞで色々試したのですがうまく抽出出来ません。
皆さん教えて下さい。お願い致します。

回答
投稿日時: 23/01/14 16:17:00
投稿者: んなっと

               A     B     C    D     E
1 和歌山県20221209作業無あああ 和歌山県 20221209 作業無  あああ
2 岩手県20230112作業有いいいい  岩手県 20230112 作業有 いいいい
3    津市20230124作業有うう   津市 20230124 作業有   うう
4   市川市20230125作業無ええ  市川市 20230125 作業無   ええ
5  町田市20230126作業有おおお  町田市 20230126 作業有  おおお
 
B1 数字の左を取り出す
=IFERROR(LEFT(A1,MATCH(0,0/MID(A1,ROW($1:$50),1),0)-1),"")
C1 次の8文字
=MID(A1,LEN(B1)+1,8)
D1 次の3文字
=MID(A1,SUMPRODUCT(LEN(B1:C1))+1,3)
E1 残り全部
=REPLACE(A1,1,SUMPRODUCT(LEN(B1:D1)),)
 
B1:E1選択して下方向・↓

回答
投稿日時: 23/01/14 16:48:53
投稿者: WinArrow
投稿者のウェブサイトに移動

例示のデータがA列にあると仮定して
作業セルを使用すると分かりやすいので、
B列を作業セルとします。
  
B1セル
=MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))
C1セル
=LEFT(A1,B1-1)
D1セル
=LEFT(SUBSTITUTE(A1,C1,""),8)
E1セル
=SUBSTITUTE(SUBSTITUTE(A1,C1,""),D1,"")
  
※中央の数字は、yyyymmddの日付と判断したので、文字数を8桁と固定しています。
※数字の桁数を取得する数式は、
=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},"")))
です。

回答
投稿日時: 23/01/14 16:57:38
投稿者: Mike

        A         B    C    D    E   F G
1 和歌山県20221209作業無氏名A 和歌山県 20221209 作業無 氏名A   5
2 岩手県20230112作業有氏名BB 岩手県  20230112 作業有 氏名BB  4
 
G1: =MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890))
B1: =LEFT(A1,G1-1)
C1: =MID(A1,G1,8)
D1: =MID(A1,G1+8,3)
E1: =MID(A1,G1+8+3,99)

投稿日時: 23/01/14 17:44:02
投稿者: kazumi-uchita

皆さん、解決しました。色々な方法があるんですね。勉強します。皆さん、ありがとうございました。