「エクセル 18時30分~20時15分の任意の時間を表示するには」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
何らかのテストデータをExcelで作ろうとしているのでしょうか。Excelで18時30分から20時15分の任意の時間(時刻)を表示させる方法を探している方による検索です。
任意の時刻を表示するサンプル
まず「エクセル 18時30分~20時15分の任意の時間を表示するには」という検索をなさった方への回答から。
=RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000) / 100000
という数式を入力して、時刻表示の書式設定を行う
「=RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000) / 100000」という数式を入力したセルで、[セルの書式設定]ダイアログ-[表示形式]タブなどから、表示形式を下図のような設定にしてやれば、
[F9]キーを押すなどして再計算を行うたびに、18時30分から20時15分までの時刻がランダムに表示させることができます。
時間・時刻の正体は小数値
上記の数式・書式設定の意味について解説していきます。
まず、Excelでは時間・時刻が、小数点以下の数値だということを理解してください。
このことをご存知なかった方は、どこかのセルに「0.5」という小数値を入力して[ホーム]タブ-[数値]グループ-[表示形式]ボックスから、「時刻」書式を設定すると、
「12:00:00」と時刻が表示されること、
「0.1」を入力して表示形式を設定すれば「2:24:00」となること、「0.99」ならば「23:45:36」となることなどを確認してください。
次に、今回必要とされている「18:30」という時刻データをどこかのセルに入力して、「数値」書式を設定して小数点以下の桁を増やすと「0.770833...」といった小数が表示されること、「20:15」という時刻を小数表示にすると「0.84375」という小数になることをご確認ください。
つまり、18時30分から20時15分までの時刻をランダムに表示するということは、「0.7708333...」から「0.84375」までの数値をランダムに表示することと、同じなわけです。
RANDBETWEEN関数でランダムな数値を取得する
Excelで指定した範囲内のランダムな数値を作成するのに使える関数はRANDBETWEEN関数です。RANDBETWEEN関数は引数に指定された2つの数値の間のランダムな数値を返します。
ただし、RANDBETWEEN関数が返すのは、整数です。ランダムな小数を作成したいのならば、RANDBETWEEN関数で返された整数を、「10」「100」「1000」といった10のn乗の数値で割り算する必要があります。
例えば、
「=RANDBETWEEN(77084, 84375)/100000」
という数式にすれば、「0.77084」から「0.87437」の小数がランダムに返されます。
TIME関数を使って可読性を上げる
18時30分は約0.77084、
20時15分は0.84375という数値ですから、
「=RANDBETWEEN(77084, 84375)/100000」
という数式を入力しておいて、時刻書式を設定してやれば、18時30分頃から20時15分の任意の時刻を表示させることができます。
ですが、このままでは可読性が悪すぎます。
「77084」「84375」といった数値では何らかのコメントを残さないと意味がわかりません。
それを改善したのが、
「=RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000) / 100000」
という数式です。
TIME関数は時刻を表す小数値を返す関数で(n時間後の時刻を求めるようなときに便利です)、引数には時・分・秒を表す数値を指定します。
「TIME(18, 30, 0)」は18時30分を意味する「0.770833...」
「TIME(20, 15, 0)」は20時15分を意味する「0.84375」
という小数値をそれぞれ返します。
ランダムな数値を返すRANDBETWEEN関数の引数には、先に説明したとおり整数を指定しなければなりません。そこで、後で小数値に戻すための割り算で使う「100000」で、それぞれを掛け算して引数に指定しています。それが
「RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000)」
の部分の意味です。
で、「RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000)」で返される、約770833から84375までの整数を小数にするために「100000」で割り算しているのが、はじめにご紹介した、
「=RANDBETWEEN(TIME(18, 30, 0)*100000, TIME(20, 15, 0)*100000) / 100000」
という数式です。
Home » Excel(エクセル)の関数・数式の使い方 » 時間計算 » Excelで任意の時間・時刻をランダムに表示する-RANDBETWEEN関数・TIME関数