質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

4回答

415閲覧

Excel VBAで12桁以上の数値の連番について

MyVBA

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2024/03/12 08:13

編集2024/03/12 08:21

実現したいこと

英文字を含めた12桁以上の数値を繰り返し連番で出したいです。

例:Y40000000001
Y40000000002…

VBA

1 2Range("A2").Select Selection.NumberFormatLocal = "@" 3 Range("A2").AutoFill Destination :=Range(A2:A1000) 4 Application.WindowState = xlNormal 5

発生している問題・分からないこと

英文字を含めた12桁以上の数値を繰り返し連番する方法がわかりません。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

英文字を含めた12桁以上の数値を繰り返し連番する方法を検索したり、自分で変えたりしてみましたが、上手くいきませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

英文字を含めた12桁以上の数値を繰り返し連番で出したい

例:Y40000000001
Y40000000002…

vba

1Sub Test1() 2 3 Dim rngCell As Range 4 Dim lngMaxLen As Long 5 Dim varNewValue As Variant 6 7 Application.ScreenUpdating = False 8 9 With Range("A2:A1000") 10 .NumberFormat = "0" 11 .Cells(1, 1).Value = 40000000001# 12 .DataSeries xlColumns, xlDataSeriesLinear, , 1 13 lngMaxLen = Len(CStr(WorksheetFunction.Max(.Value))) 14 .NumberFormat = """Y""" & String(lngMaxLen, "0") 15 For Each rngCell In .Cells 16 varNewValue = rngCell.Text 17 rngCell.NumberFormat = "@" 18 rngCell.Value = varNewValue 19 Next 20 End With 21 22 Application.ScreenUpdating = True 23 24End Sub

こんな感じの処理を実行できればよい、ということでしょうか。

投稿2024/03/12 09:51

編集2024/03/13 07:48
sk.exe

総合スコア744

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

4行目で開始したい連番を指定。
6行目のiRowには入力したい行番号を入力。
SerialNumberは通貨型を使用していますので、922,337,203,685,477までなら連番可能です。

vba

1Sub test() 2 Dim iRow As Long, SerialNumber As Currency 3 4 SerialNumber = 400000000001# '-- 開始したい連番 5 6 For iRow = 2 To 1000 7 Cells(iRow, 1) = "Y" & SerialNumber 8 SerialNumber = SerialNumber + 1 9 Next 10 11End Sub

投稿2024/03/18 23:52

wataame25

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Microsoft 365 または Excel 2021 以降なら、

vba

1Sub Sample() 2 Range("A2").Formula2 = "=TEXT(SEQUENCE(999,,400000000001),""!Y000000000000"")" 3 With Range("A2", Cells(2, 1).End(xlDown)) 4 .Value = .Value 5 End With 6End Sub

それ以前のバージョンなら、

vba

1Sub Sample2() 2 With Range("A2:A1000") 3 .Formula2 = "=TEXT(400000000000+ROW()-1,""!Y000000000000"")" 4 .Value = .Value 5 End With 6End Sub

投稿2024/03/12 14:54

hatena19

総合スコア33717

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

セルの書式設定で表示形式を「"Y"0」をいれてあとは数値をいれればよいのでは?

投稿2024/03/12 08:44

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MyVBA

2024/03/12 09:13

ありがとうございます! Selection.NumberFormatLocal = "@"のところで、"Y"0に変更してみましたが、連番にならず、同じ数値が繰り返し出力されました…。
MyVBA

2024/03/12 09:15

結果はY2になりました。
yambejp

2024/03/12 09:25

数値は「40000000001」から連番の数値を入れるんですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問