- ベストアンサー
vba split関数 コンマ区切り
エクセル・vbaに不慣れなためわかりづらかったら申し訳ありません。 コンマ区切りの数字をsplit関数で分割して指定セルに表示したいと考えており、以前質問し回答をいただいた内容でやりたいことが出来るようになりました。 ただし、若干出力場所等の変更を行いたいのですが、変更することが出来ません。 以前はA~C列にあるものをE~H列・J~M列・O~R列に表示する。 その際、A~C列にあるコンマ区切りの数字は3つのものと4つのものがあります。画像の上段部分をご確認ください。 その際のマクロは下記のとおりです。 Sub Test() Dim i As Long, j As Long, k As Long Dim tmp As Variant For i = 1 To 3 For j = 3 To 11 tmp = Split(Cells(j, i).Value, ",") For k = 0 To UBound(tmp) If k < 4 Then Cells(j, i).Offset(0, i * 4 + k).Value = tmp(k) End If Next Next Next End Sub 変更したいのは、AC8~AE16にコンマ区切りの数字があります。 AC列にある数字はAI8~AL16にAD列にある数字はAS8~AV16に AE列にある数字はBC8~BF16に表示したいと考えています。 コンマ区切りの数字は3つのものと4つのものがあります。 (画像の下段部分をご確認ください。) 上記のマクロでは下記の部分を変更する必要なのかと考えていますが、変更方法がわかりません。 お分かりの方教えていただけたら幸いです。 どうぞよろしくお願いいたします。 For k = 0 To UBound(tmp) If k < 4 Then Cells(j, i).Offset(0, i * 4 + k).Value = tmp(k)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 下記の認識で間違えありません。 > > > AC列にある数字はAI8~AL16にAD列にある数字はAS8~AV16に > > AE列にある数字はBC8~BF16に表示したいと考えています。 > > こちらを採用しています。 回答No.1もしくは回答No.2のどちらでもいけると思いますので試してみてください。
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1737/2608)
こちらのほうが分かりやすいでしょうか。 Sub Test2() Dim mRng As Range Dim i As Long Dim tmp As Variant For Each mRng In Range("AC8:AE16") tmp = Split(mRng.Value, ",") For i = 0 To UBound(tmp) If i < 4 Then Cells(mRng.Row, "AC").Offset(0, 6 + ((mRng.Column - Columns("AC").Column) * 10) + i).Value = tmp(i) End If Next Next End Sub
- kkkkkm
- ベストアンサー率66% (1737/2608)
添付画像の色付きのセルn範囲と説明のセル範囲が違いますが説明の方 > AC列にある数字はAI8~AL16にAD列にある数字はAS8~AV16に > AE列にある数字はBC8~BF16に表示したいと考えています。 こちらを採用しています。 Sub Test() Dim i As Long, j As Long, k As Long Dim tmp As Variant For i = Columns("AC").Column To Columns("AE").Column For j = 8 To 16 tmp = Split(Cells(j, i).Value, ",") For k = 0 To UBound(tmp) If k < 4 Then Cells(j, "AC").Offset(0, 6 + ((i - Columns("AC").Column) * 10) + k).Value = tmp(k) End If Next Next Next End Sub
お礼
補足
確認不足で申し訳ありません。 セルの色を変えている部分が誤りです。 下記の認識で間違えありません。 > AC列にある数字はAI8~AL16にAD列にある数字はAS8~AV16に > AE列にある数字はBC8~BF16に表示したいと考えています。 こちらを採用しています。