• 締切済み

マクロ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へ移り…とするにはどうしたらいいでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • オートフィルをVBAで実行したいのです。

    オートフィルをVBAで実行したいのです。 表(例:B2:E○)があります。○は毎回数字が変化します。 (商品仕入があれば”行”が増え、売上れば減るため) その表のA列に、A2から列方向に1から連番の数値をオートフィルで最終行まで数値を入れたいのですが、コードを教えていただけませんでしょうか? 宜しくお願いします。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • EXCEL マクロ・VBA 自動で連番を振る

    EXCELのマクロ・VBAについて質問です。 例えば、B列にデータを入力すると、入力した行まで自動的にA列に連番が入力されるようにしたいのですが、どういった方法があるでしょうか。 マクロやVBAについてはこれから勉強をしようと思っている素人ですので、コードとその解説をいただけると助かります。

  • Excel マクロで連番作成方法を教えてください。

    OS:Windwos2000 Excel2000 以下の内容をマクロで実施する方法を教えてください。 過去の質問を確認しましたが、 私の希望する内容とは分部とはことなるため、 質問させていただきました。 A列に入力されているデータの最終行まで 各B列、C列、D列にオートフィル機能を使って数式コピーを行いたい。 ※A列のデータ数は固定ではなく増減します。 ※B列、C列、D列の先頭行には数式を入力済みです。 ※オートフィル機能でなくても問題ありません。 よろしくお願いいします。 A列     B列      C列     D列      E列 データ   =LEFT(A1,4)  -   =MID(A1,8,14)  =B1&C1&D1 データ   =LEFT(A2,4)  -   =MID(A2,8,14)  =B2&C2&D2 データ   =LEFT(A3,4)  -   =MID(A3,8,14)  =B3&C3&D3 データ   =LEFT(A4,4)  -   =MID(A4,8,14)  =B4&C4&D4 データ   =LEFT(A5,4)  -   =MID(A5,8,14)  =B5&C5&D5 ・

  • 連番

    今名簿を作成しています。(4000人分) うまく伝わればいいのですが・・・ 一列目(A列)・・・1から50の数字 二列目(B列)・・・氏名 三列目(C列)・・・51から100の数字 四列目(D列)・・・氏名 五列目(E列)・・・101から150の数字 六列目(F列)・・・氏名 そして 一列目に戻り150から200の数字 三列目201から250の数字 五列目251から300数字 といったようにしていきたいのですが、 一列ずつ連番を入力していくのが面倒なので、もっと簡単にできる仕方があれば教えてください。

  • Excel VBAで結合セルに連番を振っていくには?

    Microsoft Excel 2003での質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。 これをVBAを使って自動化したいのです。 列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、 範囲指定し(セル数はまちまちなのでこれは手作業)、 セルを結合させるまではできたのですが、 この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか? わかりにくい説明で恐縮ですが、どなたかご教示ください。

  • ExcelのVBAで連番を振る。

    A列が空白で、B列に1行目から***行目(毎回変わる)までデータが入力されている時、 A列に、1から***まで(B列のデータが終わるまで、連番を振るにはどんなVBAを かいたらいいのでしょうか? お願いします。

  • 結合されたセルに連番を振るには?

    Microsoft Excelでの質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、 昇順で連番を入力しようと、 いつものようにオートフィルでズリズリっとドラッグしようとしたところ、 「この操作には、同じサイズの結合セルが必要です」 と出てしまいました。 オートフィルを使用せず、このようなセルに連番を入力するにはどうしたらよいでしょうか? 色々と調べてみましたが自力では解決できませんでした。適当な関数があるような気もするのですが…。 ぜひご教示ください。よろしくお願いいたします。

  • マクロとオートフィル

    オートフィルを使った「マクロの記録」の部分でつまずいてしまいました。 A列に名前、B列に数字が入っていて、2列にオートフィルタをかけている場合 B列の0の数字のみを非表示にしたかったので オートフィルのタブを使って「0」のチェックマークを外すという動作を「マクロの記録」で記録しました。 そこまではいいのですが、データの追加があったのでオートフィルタの範囲内に数字と名前をそれぞれの列に追加したあと上記のマクロを使ってみると、どうしても追加したデータと0が非表示になってしまいます。 これを避けるにはVBAで指示しないと行けないのでしょうか?

  • 空白セルから連番をつける

    エクセル2000を使用しています。 1.B4に以下の式を入力し、C列に文字入力するとB列に連番がふるようにしています。     =IF(C4="","",ROW()-3) 2.B53までこの式をオートフィルし、50行の連番としています。     =IF(C4="","",ROW()-3)     =IF(C5="","",ROW()-3)     =IF(C6="","",ROW()-3)           ・           ・           ・     =IF(C53="","",ROW()-3) 3.B54は区切りのため空白となっています。 4.B55から再び連番を付けるため以下の式を入力しています。     =IF(B55="","",ROW()-54) ここからが質問ですが、4項の式をB4~B53からコピーペーストすると、     =IF(B55="","",ROW()-3) となるため、末尾の3を54に手入力により変更する必要が発生してしまいます。 コピーペースト後、式変更の必要ない関数は作れるでしょうか? 連続する場合はオートフィルを使いたいのでそこは崩さない方法です。 また、マクロは使わない方法でお願いします。

このQ&Aのポイント
  • 親族が臨時給付金対象者で、死後数日後に口座に給付金が振り込まれる場合、給付金の取り扱いや相続税の有無について知りたいものです。
  • 臨時給付金は、本来は対象者自身に支給されるものですが、対象者が既に亡くなっている場合はどうなるのでしょうか?給付金は誰のものになるのか、法的な規定に基づいて判断されます。
  • 相続税については、臨時給付金は相続財産に含まれ、相続税の課税対象となる可能性があります。ただし、具体的な金額や手続きについては、相続税の法律や税務署の指針によって異なる場合がありますので、詳細な情報を確認する必要があります。
回答を見る

専門家に質問してみよう