パソコンインストラクターの方や、プログラマーの方だと、サンプルデータ・テストデータの類が必要になることがあります。
いろいろなタイプのデータが必要になるもので、ランダムな、ある程度の量の、日付データもよく求められるものの一つでしょう。
ワークシート関数を組み合わせたりして手作業で作ることも可能ですが、VBA(Visual Basic for Applications)がわかる方なら、マクロを作ってしまえば簡単にサンプルデータ・テストデータを作成できます。
Sub ランダムな日付データを作成する()
Dim fstDate As Date
Dim lstDate As Date
Dim c As Range
fstDate = #4/1/2011# 'ランダムに作成する最初の日
lstDate = #9/30/2011# 'ランダムに作成する最後の日
Randomize
For Each c In Selection
c.Value = Int((lstDate - fstDate + 1) * Rnd + fstDate)
c.NumberFormat = "yyyy""月""mm""日""dd"" (""aaa"")"""
Next
「ランダムな」といっても日付データの場合は、まったくランダムなデータというよりは、指定された範囲内の日付ということが多いのはないでしょうか。
上記のマクロでは、変数「fstDate」にランダムに生成する最初の日付、変数「lstDate」に最後の日付を指定しておいて実行すると、選択されていたセル範囲に、その指定された日付範囲のランダムな日付が入力されます。
上記の例では「2011年4月1日」から「2011年9月30日」までの日付が入力されます。
日付の指定は、InputBoxなどでユーザーが入力できるようにしてもいいかもしれません。
実際に日付データを生成しているのがFor Each ~ Next文の中の
「Int((lstDate - fstDate + 1) * Rnd + fstDate)」
です。
作成するのが日付データですから、ループ処理の中で
「"yyyy""月""mm""日""dd"" (""aaa"")"""」
という書式設定も合わせて行っています。
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » ランダムな日付を入力するマクロ