- 締切済み
マクロVBAで連番を作成するには?
Excel2003です。 VBAを使って、(L,2)から連番を作成し、一列目の値が変化したら(Aの次がBになる)また(L,2)から10からの連番をふりなおす方法を教えてください。 また、オートフィルで列を増やしても同じ動作が起こるようにする方法も、わかったら教えていただけると助かります。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ka_na_de
- ベストアンサー率56% (162/286)
これでどうでしょうか? 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
- ka_na_de
- ベストアンサー率56% (162/286)
もう少し、補足説明をお願いします。 >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
補足
ka_na_de様 申し訳ありません、orijinalと課題2は同じシートです。名前を変更し忘れてしまいました。大変失礼いたしました。
- ka_na_de
- ベストアンサー率56% (162/286)
ご質問の内容をこのように解釈しました。 「A列にデータが入力されている行まで、 L列に、10を始点とした連番を振りたい」 だとしたら、 L2セルに 10 と入力 L3セルに =IF(A3="","",L2+1) と入力し、 以下、必要なだけ余分にコピー&ペースト (例えば、1000行など)
補足
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へ移り…とするにはどうしたらいいでしょうか。
お礼
ありがとうございます。やってみます。お礼がおそくなりまして失礼いたしました。