「みんな教えて! 選手権!!」開催のお知らせ

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

A 回答 (5件)

こんにちは。



既に幾つか出てますが。。。

Sub Test1()
 Range("A1") = 1
 Range("B1:B" & Range("B65536").End(xlUp).Row). _
         Offset(0, -1).DataSeries Step:=1
End Sub
    • good
    • 26

こんばんわ。



#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 …
    • good
    • 2

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行は見出し
行と仮定しているため。
    • good
    • 8

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
    • good
    • 2

その前にセル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.のコードを実行。

いかがですか?
    • good
    • 4

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A