TEL. 03-6912-4140

〒173-0012 東京都板橋区大和町12-15

Top > Software > ExcelVBAマクロ > Format

Format関数Format function

説明

Format関数は引数で渡された値を指定されたフォーマットに変換して戻り値として返す関数です。

文法

Format(変換前の値[,変換後フォーマット[,週の最初の曜日を指定する定数 [,年内で、最初の週を指定する定数]]])

パラメータ

引数 説明
変換前の値 数値or日付 このパラメータは必須です。Formatしたい値を数値形式もしくは日付形式で指定する。
変換後フォーマット 文字列(ダブルクォーテーションで囲まれた変換フォーマット) このパラメータは任意項目ですが、指定しないことは普通はない。
数値の変換後のフォーマットの指定は以下の指定がある。
変換後
フォーマット
説明
0 「0」1つで、数値の1桁を表します。指定された桁位置に値がない場合その桁には0が入いります。数値が0の場合は、0を表示します。
桁が指定した「0」の数より多い場合はすべて表示されます。
# 「#」1つで、数値の1桁を表します。指定された桁位置に値がない場合その桁にはなにも入りません。
数値が0の場合は、なにも表示されませんが1桁目に「0」を指定することで数値が0の場合に0を表示させることができます。
桁が指定した「#」より多い場合はすべて表示されます。
. 「0」や「#」と組み合わせて、 小数点の位置を指定します。小数部の桁数が指定した桁位置を超える場合は指定の桁位置に合わせて四捨五入されます。
「.」の左側に「#」だけが指定されている場合は1未満の数値は小数点記号から始まります。
0が付くようにするには、「0」を指定します。
% 数値を100倍にして「%」が付きます。
, 1000単位の区切り記号を挿入するときに指定します。整数部の右端に「,」だけを続けて指定した場合は一つの「,」につき
1000単位で割った値に変換されます。
このとき値は桁位置の指定に応じて丸められます。
-
+
$
( )
空白(スペース)
これからの文字はそのまま表示される。これらの文字以外の文字を表示するにはその前に「\」を付けます。
\ すぐあとに続く1文字をそのまま表示する。「\」を表示するには「\\」と続けて記述。
E-
E+
e-
e+
指数表記で表示するときに指定します。
「E-」「E+」「e-」「e+」の右側に「0」や「#」で指数部の桁数を指定します。
「E-」や「e-」を使うと指数が負の場合にマイナス記号が付きます。
「E+」や「e-」の場合は指数の正負に合わせてプラスやマイナス記号が付きます。
日付の変換後のフォーマットの指定は以下の指定がある。
変換後
フォーマット
説明
c 1899年12月1日を1とした日付を「yyyy/mm/dd hh:MM:dd」形式に変換する。(/)、(:)はオペレーティングシステムの国別情報の設定によって変わります。 指定された値に小数部がない場合は日付のみ、整数部がない場合は時刻のみを表す文字列を返します。0.1は1時間12分を表す。
任意区切りの文字
(/や:、年、月、日など)
日付や時刻の区切り記号、文字を自由にセットする。
d 日付を返します。1桁の日付場合、先頭に0が付きません(1〜31)。
dd 日付を返します。1桁の場合、先頭に0が付きます(01〜31)。
ddd 曜日を英語(省略形)で返します(Sun〜Sat)。
dddd 曜日を英語で返します(Sunday〜Saturday)。
ddddd 年、月、日を含む短い形式(コントロールパネルで設定)で表した日付を返します 既定の短い日付形式は、m/d/yyです。
dddddd 年、月、日を含む長い形式(コントロールパネルで設定)で表した日付を返します。 既定の長い日付形式はmmmmdd,yyyyです。
aaa 曜日を日本語(省略形)で返します(日〜土)。
aaa 曜日を日本語で返します(日曜日〜土曜日)。
w 曜日を表す数値を返します(日曜日が1、土曜日が7となります)。
ww その日が一年のうちで何週目に当たるかを表す数値を返します(1〜54)。
m 月を表す数値を返します。1桁の場合、先頭に0が付きません(1〜12)。 ただし、hやhhの直後にmを指定した場合、月ではなく分と解釈されます。
mm 月を表す数値を返します。1桁の場合、先頭に0が付きます(01〜12)。 ただし、hやhhの直後にmmを指定した場合、月ではなく分と解釈されます。
mmm 月の名前を英語(省略形)の文字列に変換して返します(Jan〜Dec)。
mmmm 月の名前を英語で返します(January〜December)。
oooo 月の名前を日本語で返します(1月〜12月)。
q 1年のうちで何番目の四半期に当たるかを表す数値を返します(1〜4)。
g 年号の頭文字を返します(M、T、S、H)。
gg 年号の先頭の1文字を漢字で返します(明、大、昭、平)。
ggg 年号を返します(明治、大正、昭和、平成)。
e 年号に基づく和暦の年を返します。1桁の場合、先頭に0が付きません。
ee 年号に基づく和暦の年を2桁の数値を使って返します。1桁の場合、先頭に0が付きます。
y 1年のうちで何日目に当たるかを数値で返します(1〜366)。
yy 西暦の年を下2桁の数値で返します(00〜99)。
yyyy 西暦の年を4桁の数値で返します(100〜9999)。
h 時間を返します。1桁の場合、先頭に0が付きません(0〜23)。
hh 時間を返します。1桁の場合、先頭に0が付きます(00〜23)。
n 分を返します。1桁の場合、先頭に0が付きません(0〜59)。
nn 分を返します。1桁の場合、先頭に0が付きます(00〜59)。
s 秒を返します。1桁の場合、先頭に0が付きません(0〜59)。
ss 秒を返します。1桁の場合、先頭に0が付きます(00〜59)。
ttttt コントロールパネルで設定されている形式で時刻を返します。整数部を指定しても無視されます。
AM/PM 時刻が正午以前の場合は大文字でAMを返し、正午〜午後11時59分の間は大文字でPMを返します。
am/pm 時刻が正午以前の場合は小文字でamを返し、正午〜午後11時59分の間は小文字でpmを返します。
A/P 時刻が正午以前の場合は大文字でAを返し、正午〜午後11時59分の間は大文字でPを返します。
a/p 時刻が正午以前の場合は小文字でaを返し、正午〜午後11時59分の間は小文字でpを返します。
AMPM 12時間制が選択されていて、時刻が正午以前の場合は午前を表すリテラル文字列を、 正午〜午後11時59分の間は午後を表すリテラル文字列を返します。
※これらの文字列の設定および"12時間制"の選択は、コントロールパネルで行います。
AMPMは大文字、小文字のどちらでも指定できます。既定の形式は、AM/PMです。 ※変換前の値に数値を渡す場合は「1」を「1899年12月1日」とした日付を渡した日付で処理をする。 また、数値の整数部は日付、小数点以下は時間としてフォーマットされる。

サンプルコード

Dim sFormatTest As String
Dim nBeforeData As String
Dim dtBeforeData As Date

'数値
nBeforeData = 123456789
sFormatTest = Format(nBeforeData, "##,###,##0")
MsgBox nBeforeData & " + " & "##,###,##0" & " → " & sFormatTest

'日付
dtBeforeData = Now()
sFormatTest = Format(dtBeforeData, "yyyy/mm/dd", vbMonday)
MsgBox dtBeforeData & " + " & "yyyy/mm/dd" & " → " & sFormatTest

sFormatTest = Format(dtBeforeData, "c", vbMonday)
MsgBox dtBeforeData & " + " & "c" & " → " & sFormatTest

sFormatTest = Format(dtBeforeData, "gggyyyyねんmmつきddひ hhじmmふんddびょう", vbMonday)
MsgBox dtBeforeData & " + " & "yyyy年mm月dd日 hh:mm:dd" & " → " & sFormatTest

sFormatTest = Format(dtBeforeData, "dddddddddd", vbMonday)
MsgBox dtBeforeData & " + " & "dddddddddd" & " → " & sFormatTest

sFormatTest = Format(1#, "AM/PM", vbMonday)
MsgBox 1# & " + " & "AM/PM" & " → " & sFormatTest

sFormatTest = Format(dtBeforeData, "ww", vbFirstJan1)
MsgBox dtBeforeData & " + " & "ww" & " → " & sFormatTest

sFormatTest = Format(dtBeforeData, "ggg", vbFirstJan1)
MsgBox dtBeforeData & " + " & "ggg" & " → " & sFormatTest

実行結果サンプル

●変換フォーマット「0」
  Format(123,”0000″)→0123
  Format(123,”00″)→123
  Format(0,”0″)→0
●変換フォーマット「#」
  Format(123,”####”)→123
  Format(123,”##”)→123
  Format(0,”###”)→
  Format(0,”##0″)→0
●変換フォーマット「.」
  Format(0.123,”0.0000″)→0.1230
  Format(0.456,”0.00″)→0.46
  Format(0.456,”#.##”)→46
●変換フォーマット「%」
  Format(0.4567,”0.#%”)→45.7%
●変換フォーマット「-」「+」「$」「( )」「空白(スペース)」
  Format(123,”(-$0)”)→(‐$123)
  Format(1000000,”#,##0″)→1,000,000
  Format(123456789,”##0,,”)→123
  Format(1234,”#,##0\k\g”)→1,234kg
●変換フォーマット「\」
  Format(1234,”\\#,##0″)→\1,234
●変換フォーマット「E-」「E+」「e-」「e+」
  Format(123456,”0.00E+00″)→1.23E+05
  Format(0.0004567,”0.00e+##”)→4.57e-4