とても面白い依頼がきました。「午前9時以前と午後5時以後で、それらしい時間を自動で生成する方法はないか」と。目的は、仕事の開始時間と終了時間を報告するために、レポートを作成する必要があるそうで、ずいぶんさかのぼって入力しなおさなければならないそうです。
ちゃんとコツコツ入力していればそんな苦労しなくてもいいのに、と思いながらも、一つ一つ、8:55、5:12とタイプするのも膨大な作業のようです。
こんな依頼を受けて、やり方を解説しても、他にどんな事例で有用なのかよくわかりませんが、Excelでできますのでやりかたを紹介します。
午前9時から30分の間でランダムに時間を表示させる方法
急いでいる方用に、計算式を先にお知らせします。8時30分から8時59分までの間で、ランダムに時間が生成されます。
=CONCATENATE(“8:”, RANDBETWEEN(30,59))
説明が不要な方は、次の項目へどうぞ。
=CONCATENATE(A,B)
で、
AB
というように、文字を二つつなげることができます。AやBの部分には、セル(例:D7)や関数、文字が入ります。文字の場合、””で囲む必要があります。
RANDBETWEEN(30,59)
は、「30」と「59」の間でランダムに数字を生成する関数です。
これらを組み合わせることで、「8:」の部分とランダムに生成された「30」から「59」の間の数字を連結させて、時間を表示します。
さて、これですべて解決したかのようですが、実は、午後5時の時には、この方法はそのままでは使えません。「0」から「30」の間でランダムに数字を生成させると、数字が一桁の時もあり、時間が「5:3」のようになってしまいます。
午後5時から30分の間でランダムに時間を表示させる方法
こちらも急いでいる方用に、計算式を先にお知らせします。5時00分から5時30分までの間で、ランダムに時間が生成されます。
=IF(RANDBETWEEN(0,30)<10,CONCATENATE(“5:0”, RANDBETWEEN(0,9)),CONCATENATE(“5:”, RANDBETWEEN(10,30)))
ここでは、
IF(A,B,C)
という関数を使います。「もしもAであるなら、B、そうでなければ、C」という意味です。
Aの部分は、これになります。
RANDBETWEEN(0,30)<10
「0」から「30」の間の数字で10より小さかった場合
という意味です。
「10」より小さいときは、
CONCATENATE(“5:0”, RANDBETWEEN(0,9))
が表示されます。
5:0
の部分までは、テキストとして記述し、残りの部分を「0」から「9」の間の乱数を連結させて時間を表示させます。
「10」より大きいときは、
CONCATENATE(“5:”, RANDBETWEEN(10,30))
が表示されます。
5:
までがテキストとして表示され、残りの部分が「10」から「30」までの間の乱数を連結させて時間を表示させます。
本当に面倒くさい!って方には、Excel 2019で作成したサンプルファイルをご用意いたしました。ウィルスなどはございませんのでご安心ください。