• ベストアンサー

エクセルのマクロで

エクセルのマクロでこんな処理はできるでしょうか? 元データ表に 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万行になるということです。 このような処理はできるでしょうか? お教えいただけたら幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.3

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 でできるでしょう。

noname#116092
質問者

お礼

できました!! ありがとうございました。

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

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 に直してください。

noname#111860
noname#111860
回答No.2

>このような処理はできるでしょうか? Excelマクロ(VBA)ならば間違いなく可能なレベルです。

noname#116092
質問者

お礼

そうですか。可能ですか、安心しました。 ありがとうございます。 もしよかったらどのように記述するかお教えいただけませんでしょうか?

  • Kotori_D
  • ベストアンサー率36% (54/149)
回答No.1

ごめんなさい、回答じゃないんですが たしかエクセルって1万行の作成できなかったんじゃなかったかなと思いまして 限界6500行ちょっとだったような?

noname#116092
質問者

お礼

回答ありがとうございます。 通常65535行まで可能です。 ありがとうございました。

noname#116092
質問者

補足

65536でした。申し訳ありません。

関連するQ&A