dポイントプレゼントキャンペーン実施中!

添付のような表があるのですが、IDの列にカンマ区切りの文字列が入っています。
これを識別①~⑤の列のセルにそれぞれ分割して入れたいです。
例えば名前「AAA」のIDは「281a,282a,287q,383c,234d」ですが、これをそれぞれカンマで区切って、同じAAAの行のセルで
識別①のところに「281a」
識別②のところに「282a」
識別③のところに「287q」
識別④のところに「383c」
識別⑤のところに「234d」
と自動代入したいです。(鍵かっこは要りません。)条件としては、IDがいくつ入っているかわからない点です。添付の表には、すべて5個ずつ入っていますが、変動します。
Splitとかでカンマで切って入れればよいのだろうと思うのですが、解決できないので、教えていただければ助かります。よろしくお願いいたします。

「EXCEL VBA カンマ区切りの文字を」の質問画像

A 回答 (5件)

こんばんは!



すでに回答は出ていますので、参考程度で・・・
画像通りの配置だとします。

Sub Sample1()
Dim i As Long, k As Long, myAry As Variant
For i = 4 To Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Cells(i, "B"), ",") > 0 Then
myAry = Split(Cells(i, "B"), ",")
For k = 0 To UBound(myAry)
Cells(i, k + 4) = myAry(k)
Next k
End If
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

Range.TextToColumns メソッドが、そのまま使えます。


こんな感じです。

Sub sample()
Range("B4:B" & Rows.Count).TextToColumns _
Destination:=Range("D4"), _
DataType:=xlDelimited, Comma:=True
End Sub
    • good
    • 0

マクロには、いろんな方法がありますが、テキスト・エディタで、「,」を「{tab}」に置き換えて、貼り付けても良いかもしれませんね。




'//標準モジュールに入れてください。
Sub ID_Spliting()
Dim c As Range, i As Long
Dim arBuf As Variant
Dim LastRow As Long
Dim Rng As Range
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
Set Rng = Range("C4:Z" & LastRow) 'C列からZ列まで消去
If Not Rng Is Nothing Then
 Rng.ClearContents
End If
For Each c In Range("B4:B" & LastRow)
If c.Value <> "" Then
 arBuf = Split(c.Value, ",", , vbTextCompare)
 c.Offset(, 1).Value = UBound(arBuf) + 1
 For i = 0 To UBound(arBuf) '配列の出力
  c.Offset(, i + 2).Value = arBuf(i)
 Next
End If
Next
End Sub
    • good
    • 0

その通り、split関数で配列に納めて


その配列を順次操作すれば良いんじゃ?
    • good
    • 0

よく分かりませんが マクロじゃないとダメな理由はなんですか?



=TRIM(MID(SUBSTITUTE($B4,",",REPT(" ",99)),COLUMN(A4)*99-98,99))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!