• 締切済み

マクロVBAで連番を作成するには?

Excel2003です。 VBAを使って、(L,2)から連番を作成し、一列目の値が変化したら(Aの次がBになる)また(L,2)から10からの連番をふりなおす方法を教えてください。 また、オートフィルで列を増やしても同じ動作が起こるようにする方法も、わかったら教えていただけると助かります。よろしくお願いします。

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

これでどうでしょうか? Sub test2()  Dim LastRow As Long  Dim LastCol As Long  Dim r As Long  Dim c As Long  Dim StartVal As Single  Dim StepVal As Single    StartVal = 10 '初期値  StepVal = 10 'ステップ数  LastCol = Cells(2, Columns.Count).End(xlToLeft).Column  For c = 2 To LastCol   LastRow = Cells(Rows.Count, c).End(xlUp).Row   Cells(2, c).Value = StartVal   For r = 3 To LastRow    Cells(r, c).Value = Cells(r - 1, c).Value + StepVal   Next r  Next c End Sub

noname#41451
質問者

お礼

ありがとうございます。やってみます。お礼がおそくなりまして失礼いたしました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

もう少し、補足説明をお願いします。 >10,20,30…と続けて1Cに値がなくなったら2Cへ移り、また10単位で変化、2Cに値がなくなったら3Cへ移り…とするにはどうしたらいいでしょうか。 Sheets("orijinal")の中の値が入力されている部分を調べ Sheets("課題2")の中で、同じ部分に、10、20、・・・ と連番を振りたいということでしょうか? まだ、私には、やろうとしていることが理解できていない気がします。 とりあえず、コードを作りましたが、希望の内容なのか疑問です。 違っていたら、また補足してください。 Sub test()  Dim St1 As Worksheet  Dim St2 As Worksheet  Dim LastRow As Long  Dim LastCol As Long  Dim r As Long  Dim c As Long    Set St1 = Worksheets("orijinal")  Set St2 = Worksheets("課題2")  St1.Range("B2").Value = 10  LastCol = St1.Cells(2, Columns.Count).End(xlToLeft).Column  For c = 2 To LastCol   LastRow = St1.Cells(Rows.Count, c).End(xlUp).Row   St2.Cells(2, c).Value = St1.Range("B2").Value   For r = 3 To LastRow    St2.Cells(r, c).Value = St2.Cells(r - 1, c).Value + 10   Next r  Next c End Sub

noname#41451
質問者

補足

ka_na_de様 申し訳ありません、orijinalと課題2は同じシートです。名前を変更し忘れてしまいました。大変失礼いたしました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

ご質問の内容をこのように解釈しました。 「A列にデータが入力されている行まで、  L列に、10を始点とした連番を振りたい」 だとしたら、 L2セルに  10 と入力 L3セルに =IF(A3="","",L2+1) と入力し、 以下、必要なだけ余分にコピー&ペースト (例えば、1000行など)

noname#41451
質問者

補足

ka_na_de様 ありがとうございます。 (L,2)と書きましたが、開始は(2,2)からにしたいのです。 そこで、 Sheets("orijinal").Select Dim L As Integer  L = 2  C = 2 Range("B2").Value = 10 Do While Cells(L, C) <> " " '~でない間ループする。 L = L + 1 C = C + 1 Sheets("課題2").Cells(L, C) = Cells(B2 + 10, C) ―(1) としたのですが、(1)のところでデバックしてしまいます。 10,20,30…と続けて1Cに値がなくなったら2Cへ移り、また10単位で変化、2Cに値がなくなったら3Cへ移り…とするにはどうしたらいいでしょうか。