文字列操作関数5 Format

目次

VBA関数について

VBAで使う関数って何?よくわかんない!

関数は実務でもたくさん使うんだ!一つずつ覚えていこうね!

関数は決まった計算や処理を行う命令になります。実務を行う上でも関数はよく使います。

マクロ記録機能では関数は記録されないため、一つずつ覚えてい

きましょう。

今日も文字列を操作する関数の動きを勉強しましょう。

今日使う実例はこちらになります。
空のワークシート”Sheet1″を準備してね!

Sub MOJIRETSU5()

    '"Sheet1"シートをアクティブにします
    Worksheets("Sheet1").Activate

    Range("B2") = Now

    Range("C2") = Format(Range("B2"), "yyyymmdd")
    Range("C3") = Format(Range("B2"), "aaaa")
    Range("C4") = Format(Range("B2"), "ggge年m月")
    Range("C5") = Format(Range("B2"), "hh時mm分ss秒")
    Range("C6") = Format(Range("B2"), "ww週目")
    Range("C7") = Format(Range("B2"), "y日目")
    Range("C8") = Format(Range("B2"), "q期目")
    Range("C9") = Format(Range("B2"), "ddd")
    Range("C10") = Format(Range("B2"), "dddd")
        
    Range("C11") = Format(Range("B2"), "保存ファイル名_yymmdd_hhmmss")


End Sub

実例を動かすとこのような結果になります。

Format関数

Format関数は引数に指定した数値や日付などを、引数(書式記号)を適用した結果を返します。

Format関数の書式は下記となります。

Format(元の値、書式記号)

書式記号表示形式
#1桁の数値を表す
01桁の数値を表し、存在しない桁は0で埋める
,桁の区切り記号を表す
yy西暦の下2桁を表す
yyyy4桁の西暦を表す
m月の数値を表す
mm月の数値を表し、1桁の場合は0が付く
d日の数値を表す
dd日の数値を表し、1桁の場合は0が付く
aaa日本語表記の曜日の先頭を1文字で表す
aaaa日本語表記の曜日の先頭を3文字で表す
ddd英語表記の曜日の先頭3文字で表す
dddd英語表記の曜日を表す
ww元の値が、1年のうちで何周目に当たるかを表す
y元の値が、1年のうちで何日目に当たるかを表す
oooo月の名前を日本語で表す
q元の値が、1年のうちで何番目の四半期に当たるか表す
g年号を示すアルファベットを表す
gg年号の先頭1文字を表す
ggg年号を表す
e和暦年を表す
ee和暦年を表し、1桁の場合は0がつく
h時の数値を表す
hh時の数値を表す、1桁の場合は0がつく
m分の数値を表す
mm分の数値を表す、1桁の場合は0がつく
s秒の数値を表す
ss秒の数値を表す、1桁の場合は0がつく

書式記号で”m”と”mm”は日付を表す”yyyy”や”d”と併用した時に月の数値を表し、”h”や”s”など時刻を表す書式記号と同時に指定した場合は分を表します。

実例を動作させ、1行ずつ具体例をみていきましょう。

6行目のNow関数で、今日の日付を取得し、B2セルに代入しています。

Range("B2") = Now

Now関数詳細はこの記事を参考にしてください。

8行目では、西暦と月と日の数値を取得しています。

Range("C2") = Format(Range("B2"), "yyyymmdd")

9行目では、日本語表記の曜日を取得しています。

Range("C3") = Format(Range("B2"), "aaaa")

10行目では、和暦と月を取得しています。

Range("C4") = Format(Range("B2"), "ggge年m月")

11行目では時、分、秒を取得しています。

Range("C5") = Format(Range("B2"), "hh時mm分ss秒")

12行目では1年のうち何周目かを取得しています。

Range("C6") = Format(Range("B2"), "ww週目")

13行目では、1年のうち何日目かを取得しています。

Range("C7") = Format(Range("B2"), "y日目")

14行目では、1年のうち何期目かを取得しています。

Range("C8") = Format(Range("B2"), "q期目")

15行目では、英語表記の曜日先頭3桁を取得しています。

Range("C9") = Format(Range("B2"), "ddd")

16行目では、英語表記の曜日を取得しています。

Range("C10") = Format(Range("B2"), "dddd")

最後に、18行目ではファイル名の重複を避けるために、秒単位までの日付/時刻情報を取得する例となります。

Range("C11") = Format(Range("B2"), "保存ファイル名_yymmdd_hhmmss")

シリアル値

ここまできてNow関数で取得した単なる日付の情報からなぜ曜日の情報や、1年のうちで何日目かを取得できるか疑問に思う方も多いでしょう。

Excelは日付をシリアル値で管理しています。

図のように、1900年1月1日を1としてそれ以降1日経過する毎に1ずつ増加する連続した数値です。

シリアル値は単なる数値ですが、Excelはそれを調べることでその日付の年月日や曜日を取得できます。

このようにFormat関数はシリアル値から指定した書式記号に応じて変換する関数と言えます。

Format関数まとめ

今日は実例とともにFormat関数の使用方法を学びました。

実務でも、多用しますのでぜひ覚えてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

ものおと申します。

10年以上の大手メーカー勤務経験のあるエンジニアです。

これまでのものづくりの経験から小学生にも伝わるExcel VBAお役立ち記事を発信していきたいと思います。

よろしくお願いします。

コメント

コメントする

CAPTCHA


目次