本ページには広告が含まれています。
数値を表示書式に基づいて変換した文字列を返します。
GETTIMEで取得する時間はシリアル値でないため、uwscToSerial関数 (自作関数)などでシリアル値に変換します。
ExcelのTEXT関数と同じような使い方ができます。
表示形式の書き方によっては無限ループになることがありますのでご注意ください。分数への変換はまだ不具合があります。
- 構文
- String = text( serial, format )
- 引数
- serial 必須
- シリアル値
- format 必須
- フォーマット
- 戻り値
- 数値を表示書式に基づいて変換した文字列
プログラム
解説
- 61-72行目
- 2-7行目
- それぞれの元号の開始日を格納した連想配列。
- 9行目
- シリアル値が「0」となる基準日。GETTIME関数でこの基準日にserialを加算し日時を求め、特殊変数から指定された書式記号に対応する日時を文字列で取得します。
- 11,219行目
- formatを各要素に分解し適用していく。
- 12-15行目
- formatが[ ](角括弧)で囲まれた1文字以上連続するhならば以下の処理を実行。
【表示形式例】[h]、[hh]、[hhh]、…
hの文字数を取得するための正規表現を実行しMatchesコレクションを取得。hour12がTrueならserialの時間部分を12で割った余り、Falseなら時間部分をそのまま返し、hourに代入。hourをhの文字数に合わせてゼロ埋めするため、textを再帰呼び出し。 - 16-19行目
- formatが1文字以上連続するhならば以下の処理を実行。
【表示形式例】h、hh、hhh、…
- 20-22行目
- formatが[ ]で囲まれた1文字以上連続するmならば、以下の処理を実行。
【表示形式例】[m]、[mm]、[mmm]、…
- 23-25行目
- formatがmならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から月を取得。G_TIME_MMは数値のため数字に変換。 - 26-28行目
- formatがmmならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から月を取得。G_TIME_MM2で有効数字2桁の文字列を返す。 - 29-31行目
- formatがnならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から分を取得。 - 32-34行目
- formatがnnならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から分を取得。G_TIME_NN2で有効数字2桁の文字列を返す。 - 35-37行目
- formatがsならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から秒を取得。 - 38-40行目
- formatがssならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から秒を取得。G_TIME_SS2で有効数字2桁の文字列を返す。 - 41-43行目
- formatがyyyyならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から年を取得。 - 44-46行目
- formatがyyならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から年を取得。その年から下2桁を取得し返す。 - 47-59行目
- formatがeならば以下の処理を実行。
- 60-72行目
- formatがeeならば以下の処理を実行。
- 73-80行目
- formatがgならば以下の処理を実行。
- 81-82行目
- formatがggならば以下の処理を実行。
83行目>>>を実行し指定日の元号を取得し、令和なら「令」、平成なら「平」のように元号の1文字目だけを返す。 - 83-90行目
- formatがgggならば以下の処理を実行。
- 91-92行目
- formatがmmmmmならば以下の処理を実行。
93行目>>>を実行し指定月の英語名を求め、1月ならJanuaryの「J」のように先頭の文字列だけを返す。 - 93-95行目
- formatがmmmmならば以下の処理を実行。23行目>>>で月を数値で求め、1月なら0番目、2月なら1番目のようにmonthの「月-1」番目の要素を返す。
- 96-97行目
- formatがmmmならば以下の処理を実行。
93行目>>>で月の英語名を求め、1月ならJanuaryの「Jan」のように先頭から3文字を返す。 - 98-100行目
- formatがddならば以下の処理を実行。
baseDateにserial日加算した日付を求め、特殊変数から日を取得。G_TIME_DD2で有効数字2桁の文字列を返す。 - 101-103行目
- formatがdならば以下の処理を実行。
serial日加算した日付を求め、特殊変数から日を取得。 - 104-107行目
- formatが3文字以上4文字以下の連続する「a」または「d」ならば以下の処理を実行。
【表示形式例】aaa、aaaa、ddd、dddd
- 108-110行目
- 111-152行目
- 153-162行目
- 163-173行目
- 書式記号を各要素に分割する。書式記号が複数使われている場合は、まず最初にここが実行されます。シリアル値から変換が必要な書式記号とそのまま出力される文字列部分に分解し、serialと書式記号部分をtext関数に再帰呼び出しで渡し文字列を構成していきます。SubMatchesの引数が0・3の部分は時間の「:」や日付の区切りを表す「/」など変換が必要のない文字列で、1は「yyyy」、「dd」など変換が必要な文字列です。
- 174-208行目
- positionに小数点の位置を代入。 既約分数 にするための 最大公約数 を代入するgを宣言。serialの文字数をketaに代入。keta-positionで小数点以下の桁数が求められるので、\(10^{keta-position}\)をshiftに代入。shiftが\(10^{15}\)以上の値の場合は 無限小数 と考え、無限等比級数を使い分数化する手順を行う。
- 182-215行目
循環小数の循環節を見つけるための処理。
例えばserial=\(0.\dot{3}\)のときの結果は以下のようになります。
\[\begin{array}\\\quad&10x&=&3&.&33333\\-\big{)}\quad&x&=&0&.&33333\\\hline \quad&9x&=&3\end{array}\]i serial * POWER(10, i) - serial 桁数(小数点含む) 1 3 1 2 33 2 3 333 3 4 3333 4 5 33333 5 6 333333 6 7 3333333 7 8 33333333 8 9 333333333 9 10 3333333333 10 11 33333333333 11 12 333333333333 12 13 3333333333333 13 14 33333333333333 14 15 333333333333333 15 serial=\(0.\dot{1}2\dot{3}\)のときは以下のようになります。
\[\begin{array}\\\quad&1000x&=&123&.&123123\\-\big{)}\quad&x&=&0&.&123123\\\hline \quad&999x&=&123\end{array}\]i serial * POWER(10, i) - serial 桁数(小数点含む) 1 1.10810810810811 16 2 12.1891891891892 16 3 123 3 4 1231.10810810811 16 5 12312.1891891892 16 6 123123 6 7 1231231.10810811 16 8 12312312.1891892 16 9 123123123 9 10 1231231231.10811 16 11 12312312312.1892 16 12 123123123123 12 13 1231231231231.11 16 14 12312312312312.2 16 15 123123123123123 15 桁数が一番小さい値になるところが循環節をきれいに打ち消し合っているので、これを循環小数の桁数とします。
- 209-218行目
書式記号
数値の書式記号
| 書式記号 | 説明 |
|---|---|
| 0 | 書式設定で指定した0の桁数よりも入力した数値の桁数が少ない場合、0が表示されます。 |
| # | |
| / | 分数を表す。 |
日付の書式記号
年
| 書式記号 | 説明 |
|---|---|
| yy | 西暦の下2桁を表示します。 |
| yyyy | 西暦を4桁で表示します。 |
| e | 年を年号を元に表示します。 |
| ee | 年を年号を元に2桁の数値で表示します。 |
| g | 元号をアルファベットの頭文字(M、T、S、H、R)で表示します。 |
| gg | 元号を漢字の頭文字(明、大、昭、平、令)で表示します。 |
| ggg | 元号を漢字(明治、大正、昭和、平成、令和)で表示します。 |
月
| 書式記号 | 説明 |
|---|---|
| m | 月を表示します。 |
| mm | 1桁の月には0をつけて2桁で表示します。 |
| mmm | 英語の月の頭文字3文字(Jan~Dec)を表示します。 |
| mmmm | 英語の月(January~December)を表示します。 |
| mmmmm | 英語の月の頭文字(J~D)で表示します。 |
日
| 書式記号 | 説明 |
|---|---|
| d | 日にちを表示します。 |
| dd | 1桁の日にちには0をつけて2桁で表示します。 |
曜日
| 書式記号 | 説明 |
|---|---|
| ddd | 英語の曜日の頭文字から3文字(Sun~Sat)を表示します。 |
| dddd | 英語の曜日(Sunday~Saturday)を表示します。 |
| aaa | 漢字で曜日の頭文字(日~土)を表示します。 |
| aaaa | 漢字で曜日(日曜日~土曜日)を表示します。 |
時間の書式記号
| 書式記号 | 説明 |
|---|---|
| h | 時刻(0~23)を表示します。 |
| hh | 1桁の時刻には0を付けて時刻(00~23)を表示します。 |
| n | 分(0~59)を表示します。 |
| nn | 1桁の分は、0を付けて分(00~59)を表示します。 |
| s | 秒(0~59)を表示します。 |
| ss | 1桁の秒は0を付けて秒(00~59)を表示します。 |
| [ ] | 経過時間を表します。例:[m]:ss |
AM/PM
| 書式記号 | 説明 |
|---|---|
| h AM/PM | 12時間表示で時刻の後にAMまたはPMを表示します。 |
| h:nn am/pm | 12時間表示で時刻の後にamまたはpmを表示します。 |
| hh:nn:ss A/P | 12時間表示で時刻の後にAまたはPを表示します。 |
| hh:nn:ss a/p | 12時間表示で時刻の後にaまたはpを表示します。 |
| 24時間 表記 |
日本式 | 英米式 |
|---|---|---|
| 0:00 | 午前0時(午後12時) | AM12:00(AM0:00) |
| 1:00 | 午前1時 | AM1:00 |
| 2:00 | 午前2時 | AM2:00 |
| 3:00 | 午前3時 | AM3:00 |
| 4:00 | 午前4時 | AM4:00 |
| 5:00 | 午前5時 | AM5:00 |
| 6:00 | 午前6時 | AM6:00 |
| 7:00 | 午前7時 | AM7:00 |
| 8:00 | 午前8時 | AM8:00 |
| 9:00 | 午前9時 | AM9:00 |
| 10:00 | 午前10時 | AM10:00 |
| 11:00 | 午前11時 | AM11:00 |
| 12:00 | 午前12時(午後0時) | PM12:00(PM0:00) |
| 13:00 | 午後1時 | PM1:00 |
| 14:00 | 午後2時 | PM2:00 |
| 15:00 | 午後3時 | PM3:00 |
| 16:00 | 午後4時 | PM4:00 |
| 17:00 | 午後5時 | PM5:00 |
| 18:00 | 午後6時 | PM6:00 |
| 19:00 | 午後7時 | PM7:00 |
| 20:00 | 午後8時 | PM8:00 |
| 21:00 | 午後9時 | PM9:00 |
| 22:00 | 午後10時 | PM10:00 |
| 23:00 | 午後11時 | PM11:00 |
文字列の書式記号
| 書式記号 | 説明 |
|---|---|
| @ |
全角
他の書式設定の先頭に記述します。
| 書式記号 | 説明 |
|---|---|
| [DBNum1] | 半角数値を漢数字で表示します。 一二三四五六七八九十百千万億兆 |
| [DBNum2] | 半角数値を漢数字(大字)で表示します。 壱弐参四伍六七八九拾百阡萬億兆 |
| [DBNum3] | 半角数値を全角数字で表示します。 |
| [DBNum4] | 半角数値を半角数字で表示します。 |
分数
| 書式記号 | 説明 |
|---|---|
| 0/0 | 分数表記にします。結果は 既約分数 で返されます。 |
プログラム実行例
表示形式を適用する
結果
使用関数
写真の撮影日時毎に枚数を取得
選択したフォルダにある写真の撮影日時を取得・カウントします。
結果
使用関数
Windowsの稼働時間を取得
Windowsシステムの起動時間から稼働時間を求めます。
結果はd:hh:nn:ssの形式で出力されます。
結果
使用関数
UWSCの実行日時をINIファイルに書き込み・読み込み
結果
使用関数
yyyy/mm/dd 形式の日付を mm/dd/yyyy 形式に変換
結果
使用関数
ビットマップ画像を補色に変換(24ビット)
使用関数
今年何パーセント終わった?
現在時刻時点で今年の何%が終わったのかをリアルタイムで確認できます。現在時刻、経過割合、残り日数を吹き出しに表示します。更新間隔は1秒です。
結果
使用関数
