- 締切済み
ExcelのVBAで連番を振る。
A列が空白で、B列に1行目から***行目(毎回変わる)までデータが入力されている時、 A列に、1から***まで(B列のデータが終わるまで、連番を振るにはどんなVBAを かいたらいいのでしょうか? お願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 既に幾つか出てますが。。。 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)
こんばんわ。 #01の方がおっしゃっている方法でも いいのでしょうが、 私的には、以下のロジックがいいと思います。 0.A列の連番用の変数nを確保(定義)します。 1.if文で B列に文字(データ)が入っているかどうかをチェック 入っていれば、A列に数値nを書き込み、 変数nに+1します。 入っていなければ、変数nは、そのままで(次の行へ) 2.上記を loop文で囲んであげれば、完成すると思います。 その際の関数等のロジックは、勉強して下さい。 参考URL:http://www.rr.iij4u.or.jp/~srec/sub36.htm
- imogasi
- ベストアンサー率27% (4737/17069)
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)
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)
その前にセル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.のコードを実行。 いかがですか?