締切済み

ExcelのVBAで連番を振る。

  • 困ってます
  • 質問No.297178
  • 閲覧数18564
  • ありがとう数7
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 66% (871/1309)

A列が空白で、B列に1行目から***行目(毎回変わる)までデータが入力されている時、
A列に、1から***まで(B列のデータが終わるまで、連番を振るにはどんなVBAを
かいたらいいのでしょうか?
お願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全5件)

  • 回答No.5

ベストアンサー率 45% (1388/3066)

こんにちは。

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

Sub Test1()
 Range("A1") = 1
 Range("B1:B" & Range("B65536").End(xlUp).Row). _
         Offset(0, -1).DataSeries Step:=1
End Sub
OKWAVE 20th Be MORE ありがとうをカタチに
  • 回答No.4

ベストアンサー率 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
  • 回答No.3

ベストアンサー率 28% (4424/15719)

オフィス系ソフト カテゴリマスター
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行は見出し
行と仮定しているため。
  • 回答No.2

ベストアンサー率 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
  • 回答No.1

ベストアンサー率 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.のコードを実行。

いかがですか?
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ