• 締切済み

ExcelのVBAで連番を振る。

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

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

こんにちは。 既に幾つか出てますが。。。 Sub Test1()  Range("A1") = 1  Range("B1:B" & Range("B65536").End(xlUp).Row). _          Offset(0, -1).DataSeries Step:=1 End Sub

  • Good-S15
  • ベストアンサー率33% (149/439)
回答No.4

こんばんわ。 #01の方がおっしゃっている方法でも いいのでしょうが、 私的には、以下のロジックがいいと思います。 0.A列の連番用の変数nを確保(定義)します。 1.if文で B列に文字(データ)が入っているかどうかをチェック 入っていれば、A列に数値nを書き込み、 変数nに+1します。 入っていなければ、変数nは、そのままで(次の行へ) 2.上記を loop文で囲んであげれば、完成すると思います。 その際の関数等のロジックは、勉強して下さい。 参考URL:http://www.rr.iij4u.or.jp/~srec/sub36.htm

参考URL:
http://www.geocities.co.jp/SiliconValley-SanJose/9236/
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAと言うことなので、 最終行を last=range("a2").CurrentRegion.Rows.Count で得て For i=1 to last Cells(i+1,1)=i '1はA列を示す Next i UsedRangeというのも有りCurrentRegionとの 違いをWEB検索でもして調べてみてください。 Range(”A2”)としているのは、A行は見出し 行と仮定しているため。

  • rally
  • ベストアンサー率28% (32/111)
回答No.2

Sub Macro1() Dim strData As String Dim intRow As Integer Do intRow = intRow + 1 strData = Cells(intRow, 2) If strData = "" Then Exit Do Cells(intRow, 1) = intRow Loop Until strData = "" End Sub

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

その前にセルA1に1、セルA2に2を入力、セルA1:A2を選択して 選択範囲の右下の黒い■(フィルハンドル)をダブルクリックすると B列にある限りの連番を振れるのをご存知ですか? (ただし途中に空白があるとそこで途切れます) 1.上記の作業を「マクロの記録」で作成する。 2.コードができたらB列の行により3パターンに分かれるので  1件の時、2件の時、3件以上に分けて考えてください。 3.1件の時:A1に1をいれておしまい。 4.2件の時:A1に1、A2をいれておしまい。 5.3件以上の時:1.のコードを実行。 いかがですか?

関連するQ&A