エクセルのマクロについて質問です。
下の表を展開したいです。
A B C D E F G
1 C102,C103,C104 aaa bbb ccc ddd~
2 R102,R103,R105 YYY RRR EEE GGG~
3 R106,R107,R108 空白(上と同じ)
4 空白
5 L102,L103,L105 QQQ MMM NNN BBB~
という表を、
1 C102 aaa bbb ccc ddd
2 C103 aaa bbb ccc ddd
3 C104 aaa bbb ccc ddd
4 R102 YYY RRR EEE GGG
というように最後まで展開していきたいです。
下のマクロだとB列以降が全て一番上と同じ文字列がコピーされてしまいます。
よろしくお願いします。
Sub test2()
Dim ax As String 'A列のセルに入っているテキストを代入するための変数
Dim ax2 As String 'axを統合したテキストを代入するための変数
Dim num As Integer, i As Integer '回数を代入するための変数
Dim arr As Variant '配列を格納
Dim tex As String 'B列以降の文字列を代入するための変数
'A列にいくつデータが入っているかを確かめ、その数をnumに代入
Range("A1").Select
Selection.CurrentRegion.Select
num = Selection.Rows.Count
Range("A1").Select
'A1のテキストの最後にカンマが入っているかを判定。なければカンマをつける。
'A列のデータが入っている最後のセルまで上記の処理を行う。
'各テキストは変数axに代入、ax2で統合する
For i = 1 To num
ax = ActiveCell.Text
If Right(ax, 1) = "," Then
ax = ax
Else
ax = ax & ","
End If
If i = 1 Then
ax2 = ax
Else
ax2 = ax2 & ax
End If
ActiveCell.Offset(1).Select
Next i
ax2 = Left(ax2, Len(ax2) - 1)
arr = Split(ax2, ",")
Range("A1").Select
For i = 0 To UBound(arr)
num = i + 1
Cells(num, 1).Value = arr(i)
Next i
Range("A1").Select
Selection.CurrentRegion.Select
num = Selection.Rows.Count
'B~D列を展開
For i = 1 To 3
ActiveCell.Offset(, 1).Select
tex = ActiveCell.Formula
Selection.Resize(num, 1).Select
Selection.Formula = tex
Selection.Resize(1, 1).Select
Next i
End Sub
お礼
ご回答ありがとうございました。Alternative Textに保存するのは時間効率からもすばらしい案ですね。お手数おかけしました。