概要
VBAを使ったテストデータの自動生成の検討記事です。
今回は連番の自動生成です。
検討
自動生成するにあたり、必要となる条件(ルール)と具体的な例を書き上げてみます。
データ生成のネタ
連番の自動生成のための条件を挙げてみました。
条件名 | 内容 |
---|---|
範囲 | 連番の最小値、最大値を指定します。 |
増分 | 連番の増分値を指定します。 |
構成 | 連番の構成を指定します。 |
長さ | 連番の長さを指定します。 |
生成件数 | テストデータの生成件数を指定します。 |
他にもいろいろ考えられますが
最初から複雑にすると息切れしてしまうので
伸びしろは残しておきましょう。
具体的な例
条件設定の具体的な例を示します。
さらに後半においてこの例でサンプル実装してみます。
項目 | 条件(ルール) |
---|---|
最小値 | 1 |
最大値 | 99999 |
増分 | 1 |
構成 | ‘CUS’ + ‘000000[‘連番’] |
長さ | 8 |
上記の例の場合、実際の値は、CUS00001、CUS00002、CUS00003…のように自動生成されるイメージになります。
実装例
サンプルコード
値は自動生成した後、検証のためExcelシートに書き出す仕様とします。
実際にテストデータ作成ツールとして使用する際には
他の項目の値も同時に生成して
レコード単位でデータを書き込むような実装になると思います。
コード
Sub make01() '----- 生成条件のする値の条件設定 ----- '最小値 Dim start_val As Integer start_val = 1 '最大値 Dim end_val As Integer end_val = 999 '増分 Dim add_val As Integer add_val = 1 '構成(頭文字CUS+数値) Dim head_str As String head_str = "CUS" '長さ Dim item_len As Integer item_len = 8 - Len(head_str) '生成件数 Dim data_count As Integer data_count = 100 '生成したテストデータを展開するシート Dim p As Worksheet Set p = Worksheets("連番データ") Dim pcount As Integer pcount = 0 Dim i As Integer '----- 自動生成部分 ----- '最小値から件数分、処理を繰り返す For i = start_val To data_count Step add_val 'データシートの編集位置算出 pcount = pcount + 1 'データデータ数 p.Cells(pcount, 1) = pcount 'データ連番データ生成 p.Cells(pcount, 2) = head_str & Format(i, String(item_len, "0")) Next End End Sub
説明
全体的な説明はコメントを参照
実際に自動生成している箇所は33行めと41行めです。
33行め:最小値からデータ生成件数分の処理の繰り返しと増分値決定
41行め:値を自動生成して、Excelシートへセット
実行結果
Excelシートに自動生成した値がセットされています。
(1行め~100行め)
いきなりテストデータ生成用のツールを作るのではなく
本ページのように機能毎に部品化して開発すると
生成可能な値を目で検証しながら成長させつつ
汎用的なツールを構築していくことが出来ます。