• 締切済み

カンマで区切られた文章を切り出してセルに入れたい。

セルの中にいくつかのカンマで区切られた文章があります。 これを、カンマで区切られた単語を切り出して、それぞれを右隣のセルに入れたいのですが、出来るのでしょうか? 関数だけで出来るのでしょうか?それともVBAでもいいです。 よろしくお願い致します。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

同じくマクロでA1の文字列をカンマで区切って隣のセルに分解する Public Sub splitByComma() Dim a, x, i a = split(Range("A1").Value, ",") i = 0 For Each x In a i = i + 1 Range("A1").Offset(, i).Value = x Next End Sub

hiroi
質問者

お礼

早速の回答ありがとうございました。 エクセルは区切り位置で分割出来るのですから、この方法が手っ取り早いと思いますが、このテクニックは参考にさせて頂きます。やはり、エクセルは機能が非常に豊富ですが、もしこういった機能があることを知らなくてもVBAで、機能を実現させることも出来るから、VBAのテクニックも覚えていきたいと思います。非常に洗練されていてシンプルですね。 ありがとうございます。

hiroi
質問者

補足

どれもこれも、優れた回答で、良回答、次点が決められません。全て良回答にしたいところですが、申し訳ありません。 これにて締め切らせて頂きます。

  • HAL2010
  • ベストアンサー率24% (37/150)
回答No.5

マクロだとこんな感じ。 Private Sub tekito() 'セルA1に入った文字列をカンマの前後で分解、右横セルへ順番に設定。 Dim Cnt As Integer Dim tmpStr As String Dim intI As Integer 'cells(行,列) cells(1,1)はA1、cells(2,1)はA2 tmpStr = Cells(1, 1) Cnt = InStr(tmpStr, ",") intI = 2 Do While Cnt > 0 Cells(1, intI) = Mid(tmpStr, 1, Cnt - 1) If Len(tmpStr) > Cnt Then tmpStr = Mid(tmpStr, Cnt + 1) intI = intI + 1 If intI > 255 Then MsgBox "エクセルの処理列数を超えました" Exit Sub End If Else tmpStr = "" Exit Do End If Cnt = InStr(tmpStr, ",") Loop If Len(tmpStr) > 0 Then Cells(1, intI) = tmpStr End If End Sub

hiroi
質問者

お礼

早速の回答ありがとうございました。 エクセルは区切り位置で分割出来るのですから、この方法が手っ取り早いと思いますが、このテクニックは参考にさせて頂きます。やはり、エクセルは機能が非常に豊富ですが、もしこういった機能があることを知らなくてもVBAで、機能を実現させることも出来るから、VBAのテクニックも覚えていきたいと思います。 ありがとうございます。

hiroi
質問者

補足

どれもこれも、優れた回答で、良回答、次点が決められません。全て良回答にしたいところですが、申し訳ありません。 これにて締め切らせて頂きます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO.3です。 カンマが半角限定で区切り位置を使用すると回答しましたが、全角でも問題ありません。訂正し、お詫びします。

hiroi
質問者

お礼

早速の回答ありがとうございました。 全角でも出来るんですね。助かりました。ありがとうございます。

hiroi
質問者

補足

どれもこれも、優れた回答で、良回答、次点が決められません。全て良回答にしたいところですが、申し訳ありません。 これにて締め切らせて頂きます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

現状のカンマが半角あれば区切り位置で分割が可能です。又、全角であれば、=SUBSTITUTE(文章セル,",",",")で半角にして変換して、区切り位置で分割する方法は如何でしょうか。

回答No.2

私なら関数やらVBAではなくCSVにしちゃいます。(手順は関数より面倒かも?) 1)セルの中身の文字列をメモ帳か何かにコピーして保存 2)エクセルのメニューから保存したファイルを開く(カンマ区切りデータとして)

hiroi
質問者

お礼

早速の回答ありがとうございました。 わざわざ関数を組むより手っ取り早いと思うし、最初からこういうテキストファイルがあれば最善です。 ありがとうございました。

hiroi
質問者

補足

どれもこれも、優れた回答で、良回答、次点が決められません。全て良回答にしたいところですが、申し訳ありません。 これにて締め切らせて頂きます。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

範囲選択を行い[データ]-[区切り位置]でウィザードを使用して処理できると思います。 > それぞれを右隣のセルに入れたいのですが、 右隣にコピペしてから処理すると良いです。 -- > 関数だけで出来るのでしょうか?それともVBAでもいいです。 文字列操作の関数でもできますし、VBAでも可能です。

hiroi
質問者

お礼

早速の回答ありがとうございます。 なるほど範囲選択を行い[データ]-[区切り位置]で出来るんですね。 これは、本当に参考になりました。わざわざ関数とか組まなくても出来るんですね。

hiroi
質問者

補足

どれもこれも、優れた回答で、良回答、次点が決められません。全て良回答にしたいところですが、申し訳ありません。 これにて締め切らせて頂きます。

関連するQ&A