アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
ExcelのVBA初心者で、ちょっと困っています。

(例)
(1) セルA1に以下のような改行された文字列が入力されています。
【セルA1】
a
aa
aaa
b
bb
bbb

(2) セルA1内の文字列を3行毎に分割し、セルA2以降に表示させたい。
【セルA2】
a
aa
aaa
【セルA3】
b
bb
bbb

※ 今回の例ではセルA1に6行しかありませんが、実際に行数は決まっていません。

そこで以下のようなVBAを見よう見まねで作り、1行毎の分割はうまくいったのですが、『3行毎に分割』ができません。

Sub 分割()
Dim A, B, C
A = Split(Range("A1"), Chr(10))
B = 0
For Each C In A
B = B + 1
Range("A2").Offset(B - 1, 0).Value = C
Next
End Sub

ご教授いただけると助かります。
よろしくお願い致します。

A 回答 (3件)

Sub 分割()


Dim A, B, C, E
A = Split(Range("A1"), Chr(10))
B = 1
E = 1
For Each C In A
If E = 1 Then
Range("A2").Offset(B - 1, 0).Value = C
Else
Range("A2").Offset(B - 1, 0).Value = _
Range("A2").Offset(B - 1, 0).Value & Chr(10) & C
End If
If E = 3 Then
B = B + 1
E = 0
End If
E = E + 1
Next
End Sub

でどうでしょう。
    • good
    • 1
この回答へのお礼

はじめまして。
希望していた通りの結果が得られました。
大変勉強になりました。ありがとうございました。

お礼日時:2008/07/31 21:35

#2です。

ごめんなさい、この方が、良いかも。

Sub divide()
Dim A, B, C, D
A = Split(Range("A1"), Chr(10))
B = -1
For Each C In A
B = B + 1
Set D = Cells(1, Int(B / 3) + 2)
If ((B Mod 3) = 0) Then D.Value = ""
D.Value = D.Value & Chr(10) & C
Next
End Sub
    • good
    • 0
この回答へのお礼

はじめまして。
得られる結果は同じでも、色々な書き方があるのだと改めて感じました。
大変勉強になりました。ありがとうございました。

お礼日時:2008/07/31 21:38

同じですが・・・


Sub divide()
Dim A, B, C
A = Split(Range("A1"), Chr(10))
B = -1
For Each C In A
B = B + 1
If ((B Mod 3) = 0) Then Cells(1, Int(B / 3) + 2).Value = ""
Cells(1, Int(B / 3) + 2).Value = Cells(1, Int(B / 3) + 2).Value & Chr(10) & C
Next
End Sub
    • good
    • 0

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