• ベストアンサー

エクセル VBA

エクセルのVBAでの質問です。 1つのセルの中にカンマで処理したデータがあるとします。 例えば A組,32番,山田太郎,男,12歳,45人中35位,性格明るい この1つのセルでたとえば3番目だけの「山田太郎」を VBAで取り出す方法はあるのでしょうか。 要するに1つのセルの中でカンマで区切られたデータを 個々に取り出す方法か知りたいのです。 どなたか教えてください。 なぜこのようなことが必要かといいますと、 歯科において、レセ電が導入されることになりました。 そこでそれを開発しているのですが、 最後に点数の検算をしようと考えていまして、 その点数をセルから取り出す方法が知りたいのであります。 もしどなたかご存知でしたら、是非、ご教示ください。 よろしくお願い申し上げます。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim st As String Dim v st = "A組,32番,山田太郎,男,12歳,45人中35位,性格明るい" v = Split(st, ",") ' ","で区切って3番目「0,1,2・・・で(2)のこと」 MsgBox v(2) End Sub 一例まで。

MrTakuya
質問者

お礼

大変参考になりました。ありがとうございました。 ついでにカンマで区切られたそのセル内の配列の個数を知る方法もおしえていただけませんでしょうか。 すいません。いろいろとありがとうございました。 本当に参考になりました。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 UBound 関数 配列の指定された次元で使用できる添字の最大値を、長整数型 (Long) の値で返します。 No.1だと、 Ubound(v) で添字の最大値(0から始まる)を求められるので、 st = "A組,32番,山田太郎,男,12歳,45人中35位,性格明るい" v = Split(st, ",") なら6になります。 ⇒v(0)="A組" ~ v(6)="性格明るい"

MrTakuya
質問者

お礼

ありがとうございます。 わからなくて、困っていましたので、 本当に参考になりました。 しかも、すぐに答えていただいて、 すごーーーく、うれしいです。 助かりました。 では、またのご活躍をお祈りしています。 ありがとうございました。

  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

VBAを使わなくてもExcel関数だけでできます。 以下の式を適当なセルに書けば、そのセルに「山田太郎」と出ます。式中のA1は元の文字列が入っているセル位置です。 =MID(A1,FIND(",",A1,FIND(",",A1,1)+1)+1,FIND(",",A1,FIND(",",A1,FIND(",",A1,1)+1)+1)-FIND(",",A1,FIND(",",A1,1)+1)-1) 上は3番目の文字列を抜き出す方法ですが、1番目や2番目の文字列を抜き出すには以下のような式にします。 1番目(A組) =MID(A1,1,FIND(",",A1,1)-1) 2番目(32番) =MID(A1,FIND(",",A1,1)+1,FIND(",",A1,FIND(",",A1,1)+1)-FIND(",",A1,1)-1) この方法は「番目」が大きくなると式が長くなってしまいます。他にもっと良い方法があると思います。

MrTakuya
質問者

お礼

ご丁寧に回答いただきありがとうございました。 ちょっと長い感じがしますので、 やっぱり、別回答のsplit関数でいきます。 でも、早速ご回答頂いてありがとうございました。

関連するQ&A