ExcelVBAでテストデータを作るときに役に立った関数などを紹介させていただきます。
user_id | time |
2143 | 2017/1/16 3:35 |
6724 | 2017/1/2 6:05 |
4528 | 2017/1/21 9:42 |
2143 | 2017/1/19 0:56 |
6724 | 2017/1/4 18:34 |
やりたいことは単純で下記2点です。
user_idをあるマスタから取得し、ランダムでデータを作りたい。
timeにある地点からスタートした一定範囲内の時間をランダムに発生させたい(例えば2017/1/1 から 30日間の時間を任意に作り出す)
user_idは下記マスタより参照します。
user_id |
2143 |
4528 |
6724 |
この場合のExcelの関数ですが、user_idには下記関数が入ります。
Contents
一定範囲内の乱数の発生のさせ方
INDEX(マスタの範囲,RANDBETWEEN(1,2))
マスタの範囲にはA1:C1などセルの範囲になります。RANDBETWEENは最小値と、最大値を定義してその間で乱数を発生させます上記の例だと1か2になります。
INDEXは対象配列の番号をもとにデータを作成します。例えばINDEX(マスタの範囲,2)であればuser_idマスタの2番目である4528がヒットするという仕組みです。
任意時間の作り方
任意の時間の発生時間ですが、下記の式で作り出すことができます。
RANDBETWEEN(開始日, 終了日)+TIME(RANDBETWEEN(1,24),RANDBETWEEN(1,60),0)
RANDBETWEENは通常の数字だけでなく、時間でも作れます。このままでもTIMEをつけなくてもいいのですが、そうすると時分秒がすべて00:00:00になってしまいます。TIMEは時分秒をいれることで、時間に変換できる関数です。TIME(15,10,0)= PM3:10などと表記してくれます。
この性質を利用し、上記関数を作ると任意の時間を作り出すことができます。