
こんばんは。
こちらの識者の方々にはいつもお世話になっています。
VBAの件で質問があります。
B列の最終行までA列に001から文字列で連番を振りたい場合、どのような構文になりますでしょうか。
Range("A1:A" & Range("B" & Cells.Rows.Count).End(xlUp).Row).Value = Format(row, "000")
は通らなかったのですが、なにかいい構文はありますでしょうか。
データは必ず1000行以下ですので、番号は3桁で大丈夫です。
よろしくお願いいたしますm(_ _)m
No.3ベストアンサー
- 回答日時:
こんにちは。
お邪魔します。あれこれ考えていたら新しい回答が付いていました。
既に私が回答しようという理由はなくなったのですが
せっかくなのでコードだけあげてみます。
いや、しかし、余りにも多様なので、どのような志向か限定しないと
きりがないかも知れませんね。
一応、私自身が普段書き分けている4つの志向で4タイプです。
' ' ==================================================
' ' コンサバティブ版
Sub Re7820341c()
Dim nRowOffset As Long
Dim nBtm As Long
Dim i As Long
' ' 項目タイトルが1行の(つまり2行目からナンバリングする)場合
nRowOffset = 1
nBtm = Range("B" & Cells.Rows.Count).End(xlUp).Row
For i = 1 To nBtm - nRowOffset
Cells(i + nRowOffset, 1) = Format(i, "'000")
Next i
End Sub
' ' --------------------------------------------------
' ' Excel一般機能活用版(値は数値、表示は"000")
Sub Re7820341a()
Cells(1) = 1
With Range("A1:A" & Range("B" & Cells.Rows.Count).End(xlUp).Row)
.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Trend:=False
.NumberFormat = "000"
End With
End Sub
' ' --------------------------------------------------
' ' 配列(高速仕様)版
Sub Re7820341j()
Dim nBtm As Long
Dim nTop As Long
Dim i As Long
Columns(1).Clear
' ' 3行目からナンバリングする場合
nTop = 3
nBtm = Range("B" & Cells.Rows.Count).End(xlUp).Row
ReDim mtxPrint(nTop To nBtm, 1 To 1)
For i = nTop To nBtm
mtxPrint(i, 1) = Format(i - nTop + 1, "'000")
Next i
Range("A" & nTop & ":A" & nBtm).Value = mtxPrint
End Sub
' ' --------------------------------------------------
' ' 短い記述のマニアック版
Sub Re7820341jj()
Dim sRef As String
sRef = "A1:A" & Range("B" & Cells.Rows.Count).End(xlUp).Row
Range(sRef).Value = Application.Evaluate("transpose(text(transpose(row(" & sRef & ")),""'000""))")
End Sub
' ' ==================================================
No.4
- 回答日時:
もう一個、アポストロフィなしの文字列で記入:
sub macro3()
with range("A1:A" & range("B65536").end(xlUp).row)
.formula = "=TEXT(ROW(A1),""000"")"
.numberformat = "@"
.value = .value
end with
end sub
#言わずもがなですが
既に寄せられている回答の幾つかのマクロでやってるように、「文字列で記入」を止めてふつーに数値で記入し、表示形式で001と表示させた方がはるかに簡単です。
No.2
- 回答日時:
こんばんは。
>文字列で連番を振りたい
一応ご相談に忠実に。まぁ趣味に応じて手口は様々ですが。
sub macro1()
range("A:A").clearcontents
range("A1").characters.text = "001"
range("A1").autofill range("A1:A" & range("B65536").end(xlup).row), xlfillseries
end sub
もちろん
sub macro2()
dim r as long
for r = 1 to range("B65536").end(xlup).row
cells(r, "A") = format(r, "'000")
next r
end sub
とかしても、1000行以内程度ならそんなに目に見えて遅いことは無いだろうと思います。
No.1
- 回答日時:
こんばんは!
色々やり方はあると思いますが、
一例です。
Sub 連番()
Dim i As Long
i = Cells(Rows.Count, 2).End(xlUp).Row
With Range(Cells(1, 1), Cells(i, 1))
.Formula = "=row()"
.NumberFormatLocal = "000"
End With
End Sub
※ A列には数式が入っています。
実データにしたい場合は
Sub 連番2()
Dim i As Long
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
With Cells(i, 1)
.Value = Cells(i, 1).Row
.NumberFormatLocal = "000"
End With
Next i
End Sub
といった感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列内データにsmallを使う
-
VBAで保存しないで閉じると空の...
-
Excel マクロの編集がグレーに...
-
WPSOffice_マクロの有効化について
-
エクセル マクロ名にブック名...
-
エクセルVBA 個人用マクロブッ...
-
Excelのマクロでボタンを押すと...
-
エクセルのvbaにて thisworkboo...
-
エクセルファイルを値でのみし...
-
エクセルで、「いいね」のよう...
-
エクセルの表を複数枚印刷した...
-
エクセル ボタンに設定したマク...
-
Excelでマクロ実行中に画面を固...
-
エクセル関数>参照ファイル名...
-
複数のマクロボタンをまとめて...
-
エクセルの、記録を終了したマ...
-
数値に見えるものはすべて数値...
-
LDPlayerのマクロの編集方法を...
-
エクセルVBAで作成した別ブック...
-
マクロの保存先、開いてるすべ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列内データにsmallを使う
-
結合したセルの並び替え(エク...
-
【VBA】 通し番号の入力について
-
UWSCでie内のデータを取得しエ...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
Excelのマクロでボタンを押すと...
-
エクセル関数>参照ファイル名...
-
エクセル ボタンに設定したマク...
-
【Excel VBA】マクロでExcel自...
-
マクロの保存先、開いてるすべ...
-
複数のマクロボタンをまとめて...
-
エクセルのvbaにて thisworkboo...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
【Excel】マクロの保存先について
-
エクセルで、「いいね」のよう...
-
エクセルの、記録を終了したマ...
-
エクセルファイルを値でのみし...
おすすめ情報