textテキスト関数

本ページには広告が含まれています。

数値を表示書式に基づいて変換した文字列を返します。

GETTIMEで取得する時間はシリアル値でないため、uwscToSerial関数 (自作関数)などでシリアル値に変換します。

ExcelのTEXT関数と同じような使い方ができます。

表示形式の書き方によっては無限ループになることがありますのでご注意ください。分数への変換はまだ不具合があります。

構文
  1. String = text( serial, format )
引数
serial 必須
シリアル値
format 必須
フォーマット
戻り値
数値を表示書式に基づいて変換した文字列

プログラム

UWSC

解説

    61-72行目
    UWSC
    2-7行目
    UWSC
    それぞれの元号の開始日を格納した連想配列。
    9行目
    UWSC
    シリアル値が「0」となる基準日。GETTIME関数でこの基準日にserialを加算し日時を求め、特殊変数から指定された書式記号に対応する日時を文字列で取得します。
    11,219行目
    UWSC
    formatを各要素に分解し適用していく。
    12-15行目
    UWSC
    formatが[ ](角括弧)で囲まれた1文字以上連続するhならば以下の処理を実行。
    【表示形式例】[h]、[hh]、[hhh]、…

    hの文字数を取得するための正規表現を実行しMatchesコレクションを取得。hour12がTrueならserialの時間部分を12で割った余り、Falseなら時間部分をそのまま返し、hourに代入。hourをhの文字数に合わせてゼロ埋めするため、textを再帰呼び出し。
    16-19行目
    UWSC
    formatが1文字以上連続するhならば以下の処理を実行。
    【表示形式例】h、hh、hhh、…

    20-22行目
    UWSC
    formatが[ ]で囲まれた1文字以上連続するmならば、以下の処理を実行。
    【表示形式例】[m]、[mm]、[mmm]、…

    23-25行目
    UWSC
    formatがmならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から月を取得。G_TIME_MMは数値のため数字に変換。
    26-28行目
    UWSC
    formatがmmならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から月を取得。G_TIME_MM2で有効数字2桁の文字列を返す。
    29-31行目
    UWSC
    formatがnならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から分を取得。
    32-34行目
    UWSC
    formatがnnならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から分を取得。G_TIME_NN2で有効数字2桁の文字列を返す。
    35-37行目
    UWSC
    formatがsならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から秒を取得。
    38-40行目
    UWSC
    formatがssならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から秒を取得。G_TIME_SS2で有効数字2桁の文字列を返す。
    41-43行目
    UWSC
    formatがyyyyならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から年を取得。
    44-46行目
    UWSC
    formatがyyならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から年を取得。その年から下2桁を取得し返す。
    47-59行目
    UWSC
    formatがeならば以下の処理を実行。
    60-72行目
    UWSC
    formatがeeならば以下の処理を実行。
    73-80行目
    UWSC
    formatがgならば以下の処理を実行。
    81-82行目
    UWSC
    formatがggならば以下の処理を実行。
    83行目>>>を実行し指定日の元号を取得し、令和なら「令」、平成なら「平」のように元号の1文字目だけを返す。
    83-90行目
    UWSC
    formatがgggならば以下の処理を実行。
    91-92行目
    UWSC
    formatがmmmmmならば以下の処理を実行。
    93行目>>>を実行し指定月の英語名を求め、1月ならJanuaryの「J」のように先頭の文字列だけを返す。
    93-95行目
    UWSC
    formatがmmmmならば以下の処理を実行。23行目>>>で月を数値で求め、1月なら0番目、2月なら1番目のようにmonthの「月-1」番目の要素を返す。
    96-97行目
    UWSC
    formatがmmmならば以下の処理を実行。
    93行目>>>で月の英語名を求め、1月ならJanuaryの「Jan」のように先頭から3文字を返す。
    98-100行目
    UWSC
    formatがddならば以下の処理を実行。
    baseDateserial日加算した日付を求め、特殊変数から日を取得。G_TIME_DD2で有効数字2桁の文字列を返す。
    101-103行目
    UWSC
    formatがdならば以下の処理を実行。
    serial日加算した日付を求め、特殊変数から日を取得。
    104-107行目
    UWSC
    formatが3文字以上4文字以下の連続する「a」または「d」ならば以下の処理を実行。
    【表示形式例】aaa、aaaa、ddd、dddd

    108-110行目
    UWSC
    111-152行目
    UWSC
    153-162行目
    UWSC
    163-173行目
    UWSC
    書式記号を各要素に分割する。書式記号が複数使われている場合は、まず最初にここが実行されます。シリアル値から変換が必要な書式記号とそのまま出力される文字列部分に分解し、serialと書式記号部分をtext関数に再帰呼び出しで渡し文字列を構成していきます。SubMatchesの引数が0・3の部分は時間の「:」や日付の区切りを表す「/」など変換が必要のない文字列で、1は「yyyy」、「dd」など変換が必要な文字列です。
    174-208行目
    UWSC
    positionに小数点の位置を代入。 既約分数 にするための 最大公約数 を代入するgを宣言。serialの文字数をketaに代入。keta-positionで小数点以下の桁数が求められるので、\(10^{keta-position}\)をshiftに代入。shiftが\(10^{15}\)以上の値の場合は 無限小数 と考え、無限等比級数を使い分数化する手順を行う。
    182-215行目
    UWSC

    循環小数の循環節を見つけるための処理。

    例えばserial=\(0.\dot{3}\)のときの結果は以下のようになります。

    iserial * POWER(10, i) - serial桁数(小数点含む)
    131
    2332
    33333
    433334
    5333335
    63333336
    733333337
    8333333338
    93333333339
    10333333333310
    113333333333311
    1233333333333312
    13333333333333313
    143333333333333314
    1533333333333333315
    \[\begin{array}\\\quad&10x&=&3&.&33333\\-\big{)}\quad&x&=&0&.&33333\\\hline \quad&9x&=&3\end{array}\]

    serial=\(0.\dot{1}2\dot{3}\)のときは以下のようになります。

    iserial * POWER(10, i) - serial桁数(小数点含む)
    11.1081081081081116
    212.189189189189216
    31233
    41231.1081081081116
    512312.189189189216
    61231236
    71231231.1081081116
    812312312.189189216
    91231231239
    101231231231.1081116
    1112312312312.189216
    1212312312312312
    131231231231231.1116
    1412312312312312.216
    1512312312312312315
    \[\begin{array}\\\quad&1000x&=&123&.&123123\\-\big{)}\quad&x&=&0&.&123123\\\hline \quad&999x&=&123\end{array}\]

    桁数が一番小さい値になるところが循環節をきれいに打ち消し合っているので、これを循環小数の桁数とします。

    209-218行目
    UWSC

書式記号

数値の書式記号

書式記号 説明
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 分数表記にします。結果は 既約分数 で返されます。

プログラム実行例

表示形式を適用する

UWSC
結果
プレーンテキスト
使用関数

写真の撮影日時毎に枚数を取得

選択したフォルダにある写真の撮影日時を取得・カウントします。

UWSC
結果
プレーンテキスト
使用関数

Windowsの稼働時間を取得

Windowsシステムの起動時間から稼働時間を求めます。

結果はd:hh:nn:ssの形式で出力されます。

UWSC
結果
プレーンテキスト
使用関数

UWSCの実行日時をINIファイルに書き込み・読み込み

UWSC
結果
プレーンテキスト
使用関数

yyyy/mm/dd 形式の日付を mm/dd/yyyy 形式に変換

UWSC
結果
プレーンテキスト
使用関数

ビットマップ画像を補色に変換(24ビット)

UWSC
使用関数

今年何パーセント終わった?

現在時刻時点で今年の何%が終わったのかをリアルタイムで確認できます。現在時刻、経過割合、残り日数を吹き出しに表示します。更新間隔は1秒です。

UWSC
結果
プレーンテキスト
使用関数