時刻シリアル値の小数誤差を取り除きます。
また、[24:00]以上の時刻文字列でもシリアル値に変換できる変換関数です。
角度文字列(90:45:30 , 90°45’30” ,90度45分30秒)のシリアル値変換にも利用できます。
[#VALUE!]
ktCTime( 時刻, [秒有効] )
返却値 ‥‥‥ Variant(Date) 型 時 刻 ‥‥‥ Variant(Date/String) 型 秒有効 ‥‥‥ Boolean 型(省略可、省略時:True)
シリアル値を指定した場合は小数誤差を取り除いたシリアル値で返します。
この際、『秒』の有効/無効が選択できます。
時刻/角度文字列を指定した場合は、シリアル値に変換して返します。
[24時]以上の時刻文字列でも変換できます。
正しくない内容の場合は[#VALUE!]を返します。
時 刻 ‥‥‥ 時刻シリアル値、もしくは時刻/角度文字列を指定します。
シリアル値の場合は、第2prmで『秒』を有効とするか選択できます
(24:00以上の時刻も指定可能です)。
時刻文字列の場合は、hh:mm 形式、または hh:mm:ss 形式で指定します
(時は1桁以上、分と秒は1〜2桁)。
他に下記のようなパターンの時刻/角度文字列も指定できます
(数字は半角のみ可です)。
90時45分30秒
90度45分30秒
90°45’30” (度分秒の記号は全角/半角ともに可)
※時(度)を省略して「分&秒」のみの指定はできません。
[秒]の省略はできます。
秒有効 ‥‥‥ 時刻シリアル値を指定した場合に、『秒』まで有効とするかを指定します。
True(既定値):有効、False:無効
勤務時間など、『秒』まで扱わない場合は[False]を指定します。
時刻シリアル値は、時/分/秒の単位が元々【無限小数】である為に、時刻シリアル値同士の
演算を繰り返すと小数誤差が発生してきて、丸め関数である[CEILING/FLOOR]などの結果
が期待した値にならない場合がありえます。
この小数誤差は、一旦TEXT関数で時刻文字列に変換して、それを再びシリアル値に戻す事
で取り除く事ができます。つまりは、「何時何分何秒」という整数表現にする事で、エクセルが
その値を認識している時刻(セルなどに表示される時刻、イコール人間が認識する時刻)を小数
誤差を気にする事無く得て、それを再びシリアル値に戻せば、手入力したものと同じように小数
誤差のない時刻シリアル値になります。
これだけならば、TEXT関数とTIMEVALUE関数の組み合わせで出来そうですが、ひとつ問題
があります。TEXT関数は『 [h]:mm:ss 』という編集文字で【24時】以上の結果が得られますが、
TIMEVALUE関数で扱える時刻文字列は[23:59:59]までです。
[ktCTime]関数は、この問題をクリアする為に作った関数です。この内部処理を利用して、引数
には時刻シリアル値の他に、直接、24時以上の時刻文字列や[度分秒] [ °’” ]で区切った
角度文字列も指定出来ます。24時以上の値が指定できるので、180度30分などといった角度
文字列が一発でシリアル値に変換できます。
(補)角度文字列をラジアン数値に変換するには、シリアル値を[度]単位
の10進表現に直し、それに[π/180]を掛けます。
=ktCTime("180度20分15秒")*24*PI()/180
単位デリミタとして使える文字は[時, 分, 秒, 度]の他に下記の文字が使えます。
(カッコ内はShift_JIS )
度(半濁点) → ゚ (df ) ゜ (814b ) °(818b ) 分(アポストロフィ) → ' (27 ) ’ (8166 ) ′(818c ) ´ (814c ) 秒(クォーテーション) → " (22 ) ” (8168) ″ (818d ) (濁点) ゙ (de ) ゛ (814a )