- ベストアンサー
ふたつめのカンマと3つ目のカンマの文字列を表示させたい
こんにちは。表題の件質問させていただきます。 EXCELで、Find関数を使い、カンマ区切のデータ中、最初のカンマが見でくる直前のデータを表示させています =IF(セル番地="","",(LEFT(セル番地,FIND(",",セル番地)-1))) が、表題のように、2番目と3番目のカンマの間の文字列を切り出したい、という場合にFIND関数でできなさそうです。 もし知恵を拝借できれば幸いです。 よろしくお願いいたします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A1にaaa,bbb,ccc B1に =MID(A1,FIND(",",A1,1)+1,FIND(",",A1,FIND(",",A1)+1)-FIND(",",A1,1)-1)
その他の回答 (4)
- turuzou
- ベストアンサー率33% (15/45)
ユーザー定義関数(参考URL)を使用してみては如何でしょうか? Function u_split(str1 As String, str2 As String, str3 As Long) Dim x x = Split(str1, str2) u_split = "" If (str3 > 0) And (str3 <= UBound(x) + 1) Then u_split = x(str3 - 1) End If End Function 例えばA1に aaa,bbb,ccc,ddd が入力されていて ccc を表示するなら =u_split(A1,",",3) A1に aaa-bbb-ccc-ddd が入力されていて ddd を表示するなら =u_split(A1,"-",4) 上記は http://www.kotaete-net.net/Default.aspx?pgid=14&qid=120496421463 の回答6 を参考にしました。
お礼
ありがとうございます。VBAを熟知されているようですね。とても頭が下がります。勉強させていただきました。
- _Kyle
- ベストアンサー率78% (109/139)
ん~っと、「2番目と3番目のカンマの間の文字列」ということは、 要素番号で言えば3番目、"a,bb,ccc,dddd,eeeee" であれば "ccc" を取り出すんですよね。 #1さんと同じ挙動ですが別案を。 =REPLACE(LEFT(【文字列】,FIND("†",SUBSTITUTE(【文字列】,",","†",3))-1),1,FIND("†",SUBSTITUTE(【文字列】,",","†",2)),"") REPLACEやSUBSTITUTEの綴りが長いのであまり短くなった感じがしませんね^^;; なお、一般に、 =REPLACE(LEFT(【文字列】,FIND("†",SUBSTITUTE(【文字列】&",",",","†",【N】))-1),1,FIND("†",SUBSTITUTE(","&【文字列】,",","†",【N】))-1,"") という数式で 「カンマ区切り文字列のN番目の文字列」 を取り出すことができます。 ※対象文字列に短剣符(†)が含まれる可能性がある場合は、 別の文字を使ってください。 ご参考まで。
お礼
ありがとうございます。そんな方法があったのですね。奥が深いです。
少しずつ整理して考えるとわかりやすくなります。 A1にデータがあるとして、 B1:=FIND(",",A1) →1つ目のコンマの位置 C1:=FIND(",",A1,B1+1) →2つ目のコンマの位置 D1:=LEN(A1) →文字列の長さ E1:=MID(A1,B1+1,D1-C1) →コンマ間の文字列
お礼
ご回答ありがとうございます。とてもロジカルですね。ここまで考えは及びませんでした。
- merlionXX
- ベストアンサー率48% (1930/4007)
おっそろしく長くなってしまいましたがふたつめのカンマと3つ目のカンマの間の文字列を求めてみました。 =LEFT(MID(セル番地,FIND(",",セル番地,FIND(",",セル番地)+1)+1,LEN(セル番地)),FIND(",",MID(セル番地,FIND(",",セル番地,FIND(",",セル番地)+1)+1,LEN(セル番地)))-1)
お礼
さっそくのご回答ありがとうございます。確かに長いですね?
お礼
できました!ありがとうございます。