skillup

技術ブログ

プログラミング全般

Excelでのテストデータ作り

投稿日:

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には下記関数が入ります。

一定範囲内の乱数の発生のさせ方

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などと表記してくれます。

この性質を利用し、上記関数を作ると任意の時間を作り出すことができます。

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データのシリアライズ

おととしにJavaをやったときにでてきましたがSessionに情報を格納するときにでてきたシリアライズについて。 セッションはステートフルな状態を実現するための便利なデータの保存方法ですが、値をオブジ …

no image

エラーレポーティングサービス Sentryについて

リリースした後、運用段階に入ると定期的にバグ報告が上がってきます。 本来はリリース前に研修テストをすべきなんですが、そんな余裕ないことも多い(汗) で、そんな時に大事なのが エラーを気づけること 対処 …

no image

ファジープロジェクト対策 その2

前回に引き続き、大事だと思ったこと。一部単なるフレームワークの作り方的な内容になっているかも。 Contents1 テンプレート共通化2 バリデーション3 ログ出し4 異常系の処理5 新規プラグイン+ …

no image

コードの分割

今回はリーダブルコードの8章。コードの分割について。 ポイントとしては1行に情報を詰め込みすぎているような場合は分割して、意味がわかりやすい区切りにまとめよう、といったことでしょうか。つまりは「困難は …

no image

トランザクショントークンについて

フォーム画面で入力を行うときにはPOSTでデータを受け取ってエラーチェックしたり、データベースに入力をしたりします。 ただその時に何も考えずに安易に送信→受信の際に以下のようなトラブルがあり得ます。 …