• ベストアンサー

ふたつめのカンマと3つ目のカンマの文字列を表示させたい

こんにちは。表題の件質問させていただきます。 EXCELで、Find関数を使い、カンマ区切のデータ中、最初のカンマが見でくる直前のデータを表示させています =IF(セル番地="","",(LEFT(セル番地,FIND(",",セル番地)-1))) が、表題のように、2番目と3番目のカンマの間の文字列を切り出したい、という場合にFIND関数でできなさそうです。 もし知恵を拝借できれば幸いです。 よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

A1にaaa,bbb,ccc B1に =MID(A1,FIND(",",A1,1)+1,FIND(",",A1,FIND(",",A1)+1)-FIND(",",A1,1)-1)

Yepes
質問者

お礼

できました!ありがとうございます。

その他の回答 (4)

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.5

ユーザー定義関数(参考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 を参考にしました。

参考URL:
http://www.konomiti.com/Ex_kan_05.html,http://takashixxx.blog88.fc2.com/blog-entry-21.html
Yepes
質問者

お礼

ありがとうございます。VBAを熟知されているようですね。とても頭が下がります。勉強させていただきました。

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.4

ん~っと、「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番目の文字列」 を取り出すことができます。 ※対象文字列に短剣符(†)が含まれる可能性がある場合は、  別の文字を使ってください。 ご参考まで。

Yepes
質問者

お礼

ありがとうございます。そんな方法があったのですね。奥が深いです。

noname#99913
noname#99913
回答No.3

少しずつ整理して考えるとわかりやすくなります。 A1にデータがあるとして、 B1:=FIND(",",A1)       →1つ目のコンマの位置 C1:=FIND(",",A1,B1+1)   →2つ目のコンマの位置 D1:=LEN(A1)         →文字列の長さ E1:=MID(A1,B1+1,D1-C1)  →コンマ間の文字列

Yepes
質問者

お礼

ご回答ありがとうございます。とてもロジカルですね。ここまで考えは及びませんでした。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

おっそろしく長くなってしまいましたがふたつめのカンマと3つ目のカンマの間の文字列を求めてみました。 =LEFT(MID(セル番地,FIND(",",セル番地,FIND(",",セル番地)+1)+1,LEN(セル番地)),FIND(",",MID(セル番地,FIND(",",セル番地,FIND(",",セル番地)+1)+1,LEN(セル番地)))-1)

Yepes
質問者

お礼

さっそくのご回答ありがとうございます。確かに長いですね?

関連するQ&A