- ベストアンサー
エクセルのマクロで
エクセルのマクロでこんな処理はできるでしょうか? 元データ表に A列からC列まである数値が5000行にわたって入っています。 例 A B C 1行目 1 4 6 2行目 4 7 8 3行目 5 6 4 4行目 7 8 2 ・ ・ 今、1行目と2行目の間に新たな行を挿入し、 C1セルの値を新たに挿入した行のA列からC列に貼り付けたい。 同様に現時点での2行目と3行目の間に新たな行を挿入し 今度はC2セルの値をその行に貼り付けます。 上の例で言うとこうなります。これを最後の行まで繰り返します。 A B C 1行目 1 4 6 2行目 6 6 6 3行目 4 7 8 4行目 8 8 8 5行目 5 6 4 6行目 4 4 4 7行目 7 8 2 8行目 2 2 2 ・ ・ 元データは5000行あるので、都合1万行になるということです。 このような処理はできるでしょうか? お教えいただけたら幸いです。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro1() a = 2 For n = 1 To 5000 Rows(a).Insert Shift:=xlDown Cells(a, 1).Value = Cells(a - 1, 3) Cells(a, 2).Value = Cells(a - 1, 3) Cells(a, 3).Value = Cells(a - 1, 3) a = a + 2 Next End Sub でできるでしょう。
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
E1:G10000に出力します。 Sub test() Dim v As Variant Dim myArr As Variant Dim i As Long, j As Long v = Range("A1:C5000").Value ReDim myArr(1 To UBound(v, 1) * 2, 1 To 3) For i = 1 To UBound(v, 1) For j = 1 To 3 myArr(i * 2 - 1, j) = v(i, j) myArr(i * 2, j) = v(i, 3) Next Next Range("E1").Resize(UBound(myArr, 1), 3) = myArr End Sub A1から出力するのなら >Range("E1").Resize(UBound(myArr, 1), 3) = myArr Range("A1").Resize(UBound(myArr, 1), 3) = myArr に直してください。
>このような処理はできるでしょうか? Excelマクロ(VBA)ならば間違いなく可能なレベルです。
お礼
そうですか。可能ですか、安心しました。 ありがとうございます。 もしよかったらどのように記述するかお教えいただけませんでしょうか?
- Kotori_D
- ベストアンサー率36% (54/149)
ごめんなさい、回答じゃないんですが たしかエクセルって1万行の作成できなかったんじゃなかったかなと思いまして 限界6500行ちょっとだったような?
お礼
回答ありがとうございます。 通常65535行まで可能です。 ありがとうございました。
補足
65536でした。申し訳ありません。
お礼
できました!! ありがとうございました。