次の方法で共有


Power BI Desktop でカスタム書式設定文字列を使用する

適用対象: Power BI Desktop Power BI サービス

Power BI Desktop でカスタム書式設定文字列を使用すると、ビジュアルでのフィールドの表示方法をカスタマイズし、意図したとおりにレポートが表示されるようにすることができます。

[書式] ドロップダウン メニューの [カスタム] が強調表示されている、モデリング ビューの Power BI デスクトップのスクリーンショット。

書式指定文字列には、次の 3 つのレベルがあります。

  • モデル。 モデル内のフィールドの書式指定文字列を設定するか、ダイナミック書式指定文字列を使用してメジャーを書式設定することができます。 ビジュアル レベルまたは要素レベルの書式指定文字列によってオーバーライドされない限り、そのフィールドを使用するすべての場所で書式指定文字列が適用されます。
  • ビジュアル。 書式指定文字列が既に含まれている場合でも、ビジュアルにある任意の列、メジャー、またはビジュアル計算で書式指定文字列を設定できます。 その場合、モデル レベルの書式指定文字列がオーバーライドされ、ビジュアル レベルの書式指定文字列が使用されます。 フィールドの集計を変更すると、以前に設定したビジュアル レベルの書式指定文字列が無効になり、書式指定文字列が削除されます。 フィールドに対するビジュアル レベルの書式指定文字列は、フィールドに対して保持されますが、ビジュアル計算には保持されません。 フィールドにビジュアル レベルの書式指定文字列を設定した後に、そのフィールドを削除して同じビジュアルに再度追加すると、ビジュアル レベルの書式指定文字列が復元されます。 一方、ビジュアル計算では、書式指定文字列は復元されません。
  • 要素。 データ ラベルと、新しいカードおよび新しいスライサー ビジュアルの特定の要素に書式指定文字列を設定できます。 このレベルを拡張し、対応項目を増やすことが予定されています。 ここで設定した書式指定文字列は、ビジュアル レベルとモデル レベルで設定された書式指定文字列をオーバーライドします。

これらのレベルは階層構造であり、モデル レベルが最も低いレベルであり、要素レベルが最も高いレベルです。 上位レベルの列、メジャー、またはビジュアル計算に定義された書式指定文字列は、下位レベルで定義されたものをオーバーライドします。

ビジュアル計算はモデルに含まれないため、モデル レベルで書式設定文字列を設定することはできませんが、ビジュアル レベルまたは要素レベルで設定できます。 メジャーと列には、次の 3 つのレベルすべてで書式指定文字列を含めることができます。

Level 影響 以下に対応します。
要素 選択したビジュアルの選択した要素 メジャー、列、ビジュアル計算
ビジュアル 選択した視覚エフェクト メジャー、列、ビジュアル計算
モデル 同じモデル上のすべてのビジュアル、すべてのページ、すべてのレポート メジャー、列

使用できる 3 つのレベルの書式指定文字列 (モデル、ビジュアル、要素) を示す図。ビジュアル計算ではビジュアル レベルと要素レベルの書式指定文字列のみを持つことができ、メジャーと列はすべてのレベルの書式指定文字列を持つことができます。

要素レベルの書式指定文字列は、現時点では特定のビジュアルとデータ ラベルでのみ使用できます。

カスタム書式設定文字列の使用方法

カスタム書式指定文字列を使用するには、まず、作業するレベル (Model、Visual、Element) を決定する必要があります。

ヒント

K や M などの予期しないサフィックスが表示される場合は、カスタム書式指定文字列自体ではなく、ビジュアルの 表示単位 設定 (自動) に基づくものであり、表示単位を None に設定して完全な数値を表示します。

モデル レベルの書式指定文字列を追加する

モデルでカスタム書式設定文字列を作成するには、[モデリング] ビューでフィールドを選択し、[プロパティ] ペインで [書式] のドロップダウン矢印を選択します。

[書式] メニューが強調表示されている [プロパティ] ウィンドウのスクリーンショット。

[書式] ドロップダウン メニューから [カスタム] を選択したら、よく使用される書式指定文字列の一覧から選択します。

[書式] メニューのスクリーンショット。[カスタム] が強調表示されています。

ビジュアル レベルの書式指定文字列を追加する

ビジュアル レベルの書式指定文字列を作成するには、最初にビジュアルにフィールドまたはビジュアル計算を追加します。 次に、ビジュアルを選択した状態で、書式設定ウィンドウを開き、書式設定ウィンドウの [全般] セクションに移動します。 [データの書式指定] 設定に移動し、書式指定文字列を構成します。

ビジュアルの [書式] ペインのスクリーンショット。[全般] セクションの [データの書式指定] 設定が表示されています。

Note

ここでは、VBA 書式指定文字列の代わりに .NET 書式指定文字列を入力する必要があります。 これは一時的な問題であり、将来のリリースで解決されます。

要素レベルの書式指定文字列を追加する

要素レベルの書式指定文字列を作成するには、書式ペインを開き、書式を設定する要素の書式指定文字列セクションに移動します。 すべての要素が書式指定文字列をサポートしているわけではないことに注意してください。 また、要素レベルの 表示単位 は、 None に設定しない限り、自動 K/M/B スケーリングを適用できます。 データ ラベルに書式指定文字列を設定するには、書式ペインの [ビジュアル] セクションを開き、[データ ラベル]>[値]>[表示ユニット] をカスタムに設定し、書式指定コードを入力します。

ビジュアルの [書式] ペインのスクリーンショット。[ビジュアル] セクションで、[データ ラベル] の [値の書式] 設定が表示されています。

サポートされているカスタム書式設定構文

カスタム書式設定文字列は、Excel や他の Microsoft 製品に共通する VBA スタイルの構文に従いますが、他の製品で使用されるすべての構文がサポートされているわけではありません。

Note

ビジュアル レベルの書式指定文字列では現在 、.NET の日付/時刻と数値書式トークンが使用されています (一時的な制限)。 これは、大文字と小文字の区別が重要であることを意味します (M = 月、m = 分)。 モデル レベルおよび要素レベルのカスタム書式指定文字列では、次の表に記載されている VBA スタイルのトークンを使用します。 この制限は今後のリリースで削除されるため、すべてのレベルで統一された構文が使用されます。

月または分の予期しない値のトラブルシューティング

カスタム形式に月が予想される分数が表示される場合:

  1. ビジュアル レベル (現在は .NET 構文) で書式を適用したかどうかを確認します。
  2. その場合は、 m を月の M に変更するか、VBA スタイルの mを使用するようにカスタム書式指定文字列をモデル レベルに移動します。
  3. VBA スタイルのコンテキストで nn を分単位で使用して、月の記号との混同を避けます。

不要な自動スケーリング (K、M、B サフィックス) のトラブルシューティング

カスタム数値形式 ( #.####,##0など) を設定しても、ビジュアルに K (千)、M (百万)、B (億) などのサフィックスが表示される場合、通常、サフィックスはカスタム書式指定文字列から取得されません。 ビジュアルまたは要素の 表示単位 (自動スケール) 設定によって適用されます。

一般的な原因:

  • カード、KPI、ゲージ、新しいカード、スライサー値、またはデータ ラベルの表示単位を 自動 (既定値) に設定します。
  • 要素レベルの書式設定が適用されましたが、要素の表示単位は引き続き自動スケーリングされます。
  • 表示形式を変更した後に読み取られたビジュアル計算または集計 (表示単位は Auto に戻されました)。

K/M/B サフィックスを削除する方法:

  1. ビジュアルを選択します。
  2. [書式] ウィンドウを開きます。
  3. 数値の設定 ([ 全般] > [データ形式]、[ ビジュアル > データ ラベル]、[ 吹き出しの値]、[新しいカードの ] など) を見つけます。
  4. 表示単位 (単位または値の単位) を [なし] (自動ではなく) に設定します。
  5. 目的のカスタム書式指定文字列 ( #,##000.0#,##0.###など) を再適用 (または確認) します。

引き続き存在する場合:

  • 要素レベルのオーバーライド (データ ラベルの設定など) も [自動] に設定されているかどうかを確認します。
  • リテラル "K" がカスタム形式 (たとえば、 0" K") に埋め込まれていないことを確認します。
  • モデルレベルの指標の場合は、DAX ロジックが既に値をスケーリングしていないことを確認します(たとえば、1000 で除算する場合など)。

比較例:

Setting 表示単位 カスタム形式 結果
カード ビジュアル (既定) Auto #,##0 12K (スケーリングされた)
カード ビジュアル (変更) なし #,##0 11,732
データ ラベル (クラスター化列) Auto 0 12K
データ ラベル (クラスター化列) なし 0 11,732
新しいカード (値の書式設定) Auto 0.0" °C" 23.4K °C (望ましくない)
新しいカード (値の書式設定) なし 0.0" °C" 23.4 °C

ヒント

既定の K/M/B ロジックではなく、カスタム 省略形 が必要な場合は、[ 表示単位: なし ] のままにし、書式指定文字列にリテラル テキストを追加します (例: 0.0"k")。 これにより、生の数値精度制御が保持されます。

Note

値のサイズに基づく動的スケーリング (サフィックスなし、K、M の切り替えなど) には、テキストを返すメジャー ( FORMAT() や条件付きロジックを使用するなど) または動的書式指定文字列メジャーが必要です。 静的カスタム書式指定文字列だけでは、条件付きサフィックス ロジックは提供されません。

次の表では、Power BI でサポートされている構文を定義します。

サポートされている日付記号 (モデルおよび要素レベルで使用される VBA スタイルの構文)

次の記号は、VBA スタイル (Excel に似た) 構文を使用するカスタム書式指定文字列に適用されます。

Important

ビジュアル レベルのカスタム書式指定文字列には、一時的に .NET 形式トークンが必要です (次の点に注意してください)。 .NET カスタム日付/時刻形式では、大文字の M は月を表し、小文字の m は分を表します。 VBA スタイルの形式 (ここではモデルレベルと要素レベルで使用) では、小文字の m は月を表します。 この違いは、混乱の一般的な原因です。

Symbol 意味または出力
d 先行ゼロのない月の日 (1 ~ 31)。
dd 先頭がゼロ (01 ~ 31) の月の日。
m 先頭に 0 を付けない月番号 (1 ~ 12)。 hまたはhhの直後の場合は、分として解釈されます (後の「分記号」を参照)。
mm 先頭が 0 (01 ~ 12) の月番号。 hまたはhhの直後の場合、先頭に 0 (00 ~ 59) の分と解釈されます。
mmm 月の省略名 (1 月から 12 月)。 (イスラム暦の月の名前には省略形はありません)。
mmmm 完全な月名 (1 月から 12 月)。
yy 2 桁の年 (00 ~ 99)。
yyyy 4 桁の年 (0001 ~ 9999)。

Note

予想される月の代わりに予期しない分単位の値が表示される場合は、ビジュアル レベルの形式設定(現在の .NET スタイル)またはモデル/要素レベルの形式設定(VBA スタイル)でフォーマットを入力したかどうかを確認してください。

サポートされている時刻記号 (VBA スタイル)

Symbol 意味または出力
h 先頭にゼロがない時間 (0~23)。 AM/PM と組み合わせると、1 から 12 を表します。
hh 先頭が 0 (00 ~ 23) の時間。 AM/PM と組み合わせると、01 から 12 を表します。
n 先頭にゼロ無しの分 (0 ~ 59)。
nn 0で始まる分(00~59)。
m / mm 分 (0~59/00~59) はhまたはhhの直後にのみ適用されます。 それ以外の場合は、月の記号として扱われます (日付記号を参照)。
s 先頭が 0 (0 ~ 59) の 2 番目。
ss 先頭が 0 (00 ~ 59) の 2 番目。

ヒント

n / nn月の記号があいまいにならないように、m / mmを分単位で使用します。

日付と時刻の例

2025-09-04 15:07:08 (2025 年 9 月 4 日午後 3:07:08) のサンプル タイムスタンプを想定します。

文字列の書式設定 コンテキスト (VBA スタイルと .NET) 想定される出力 注記
m/d/yy VBA スタイル (モデル) 9/4/25 数値としての月。0 を先頭に付けずに日付を指定します。
mm/dd/yyyy VBAスタイル(モデル) 09/04/2025 先頭に 0 を指定します。
mmm d,yyyy VBAスタイル(モデル) 2025 年 9 月 4 日 月名の省略形。
mmmm d VBAスタイル(モデル) 9 月 4 日 完全な月名。
h:nn:ss VBA形式(モデル) 15:07:08 nnを使用して、月のあいまいさを回避します。
時:分:秒 VBAスタイル【モデル】 15:7:8 m 分として解釈されます ( hに従います)。
m VBAスタイル【モデル】 9 単独の月番号。
M .NET ビジュアル レベル 9 .NET では、大文字の M = 月。
m .NET ビジュアル レベル 07 .NET では、小文字の m = 分です。
mm/dd 混合誤用 (.NET ビジュアル レベル) 07/04 ユーザーが期待しているのが月/日である場合、分/日を表示することが混乱の原因になります。

Note

期待していた月 (たとえば 09) の代わりに分の値 (たとえば 07) が表示された場合、それはおそらく VBA スタイルと思い込んで、.NET スタイルの形式 (ビジュアル レベル) を入力した可能性があります。 大文字と小文字の区別 (Mm) を調整するか、書式をモデル レベルに移動します。

Unicode 記号または特殊記号 (度数、通貨、上付き文字) を追加する

カスタム書式指定文字列では、16 進シーケンスまたはエスケープ シーケンス ( \u00B00xB0°など) はサポートされていません。 記号を含めるには、引用符で囲まれたリテラル内に実際の Unicode 文字を挿入 (貼り付け/型) するか、末尾のリテラルの場合は引用符で囲まれていない (一部の数値形式の場合) を挿入します。

目標 書式指定文字列 (モデル/VBA スタイル) 出力の例 注記
セルシウスにスペースを追加する 0.0" °C" 23.4 °C スペースは引用符内に含まれるため、保持されます。
パーセント テキストを追加する (自動スケーリングではない) 0.00" pct" 12.34 pct %プレースホルダーとは異なります (100 を乗算)。
KB サフィックスを持つ数千を表示する 0" KB" 512 KB リテラル "KB"。
明示的な記号を持つ通貨 #,##0.00" €" 1,234.00 € 動的シンボルが必要な場合は、ロケールベースのモデル レベルの通貨を優先します。
マイクロ秒ラベル 0" µs" 15 µs μ (U+00B5) を貼り付けます。
末尾に単位のない段階 0"°" 90° スペースは追加されません。
上付き二乗 0" m²" 25 m² ² (U+00B2) を貼り付けます。

ヒント

記号を挿入するには:

  • Windows: Win + . (絵文字/記号パネル) を押すか、ALT コードを使用します (たとえば、 Altを押したまま、テンキーに 「°」と入力 0176 )。
  • 文字マップからコピー/貼り付け。
    リテラルが書式指定文字列に含まれると、プレーン テキストとして扱われます。

Important

バックスラッシュ (\)、 \uXXXX、または 0xNN エスケープ パターンは解釈されません。Power BI では、カスタム書式指定文字列で Unicode に変換されません。 文字自体を使用します。 ビジュアル レベル (.NET) 形式の場合、ルールは同じです。引用符内に実際の文字を含めます (例: 0.0" °C")。 バックスラッシュは次の文字だけをエスケープしますが、Unicode シーケンスを作成しません。

Note

動的シンボル ロジックの場合 (スライサーの選択に基づいて °C/°F を切り替える場合など)、静的なカスタム書式指定文字列ではなく、テキスト値または動的書式指定文字列メジャーを返す DAX メジャーを使用します。

カスタム値文字列の書式設定方法のを参照してください。

ユーザー定義の数値式では、1 から 3 個のセクションをセミコロンで区切って指定できます。 セミコロンの間に何もない場合、欠落しているセクションは表示されず、代わりに "" が表示されます。 セミコロンを指定しない場合は、正の書式設定が使用されます。

さまざまな値文字列のさまざまな書式設定の例を次に示します。

書式設定文字列 書式設定文字列 書式設定文字列 書式設定文字列
0.00;-0.0;"Zero" 0.00;; 0.00;-0.0; 0.00;
-1.234 -1.2 $ -1.2 $
0 "Zero" $ $ 0.00
1.234 1.23 1.23 1.23 1.23

次の表では、定義済みの名前付きの日付と時刻の書式設定を示します。

書式設定名 説明
一般の日付 日付と時刻を表示します (例: 4/3/93 05:34 PM)。 小数部分がない場合は、日付のみを表示します (例: 4/3/93)。 整数部分がない場合は、時刻のみを表示します (例: 05:34 PM)。 日付の表示は、システム設定によって決まります。
長い日付 システムの長い日付形式に従って日付を表示します。
短い日付 システムの短い日付形式を使用して日付を表示します。
長い時刻 システムの長い時刻形式を使用して時刻を表示します。時、分、秒が含まれます。
短い時刻 24 時間形式を使用して時刻を表示します (例: 17:45)。

名前付きの数値書式設定

次の表では、定義済みの名前付きの数値の書式設定を示します。

書式設定名 説明
一般的な数字 桁区切り記号のない数値を表示します。
通貨 千の位の区切り記号を使って数値を表示する。 小数点の後に 2 桁を表示します。 出力はシステムのロケール設定に基づいきます。
固定 小数点の前に少なくとも 1 桁、小数点の後に 2 桁を表示します。
Standard 桁区切り記号付きの数値を表示します。小数点の前に少なくとも 1 桁、小数点の後に 2 桁を付けます。
Percent 数値を 100 倍し、パーセント記号 (%) を付けて表示します。 常に小数点の後に 2 桁を表示します。
科学的表記 標準的な科学的表記法を使用します。

その他の日付/時刻の書式設定文字

次の補助文字が適用されます (まだ説明されていません)。

Character Description
: 時刻区切り記号 (ロケール固有)。
/ 日付の区切り記号 (ロケール固有)。
tt 午前/午後 指定子 (12 時間制、大文字で)。

Note

他の日/月/年/時/分/秒のトークンは、既に定義されているモデル/要素レベルの VBA スタイルのセマンティクスと、ビジュアル レベルでの .NET セマンティクス (大文字と小文字の区別) に従います。

次の表では、ユーザー定義の数値書式設定を作成するために使用できる文字を示します。

Character Description
なし 書式設定なしで数値を表示します。
( 0 ) 数字のプレースホルダー。 数字または 0 を表示します。 式の書式設定文字列で 0 が出現する位置に数字がある場合は、それを表示します。 それ以外の場合は、その位置に 0 を表示します。 数値の桁数が、書式設定式のゼロ (小数点の両側) の数より少ない場合は、先頭または末尾に 0 が表示されます。 小数点以降で数値の桁数が 0 の数より多い場合、数値は 0 で表示されている小数位までに丸められます。 小数点以前で数値の桁数が 0 の数より多い場合、余分な桁の数字は変更されることなく表示されます。
( # ) 数字のプレースホルダー。 数字を表示するか、または何も表示しません。 式の書式設定文字列で # が出現する位置に数字がある場合は、それを表示します。それ以外の場合は、その位置に何も表示しません。 この記号は、0 桁のプレースホルダーのように機能します。 ただし、数値の桁数が、形式表現の小数点のいずれかの側で # 文字の数と同じかそれよりも少ない場合、先頭と末尾のゼロは表示されません。
( . ) 小数点のプレースホルダー。 ロケールによっては、小数点区切り記号としてコンマが使用されます。 小数点プレースホルダーにより、小数点の前後に表示される桁数が決まります。 形式表現でこの記号の左側に番号記号のみがある場合、1 より小さい数値は小数点で始まります。 小数部の前にゼロを表示するには、小数点区切り記号の左側の最初の桁プレースホルダーとして 0 を使用します。 書式設定された出力で、小数点プレースホルダーとして実際に使用される文字は、システムによって認識される数値書式によって異なります。
(%) パーセント プレースホルダー。 式に 100 が乗算されます。 パーセント文字 ( % ) は、書式設定文字列内で出現する位置に挿入されます。
( , ) 千位区切り 一部のロケールでは、ピリオドが桁区切り記号として使用されます。 桁区切り記号は、小数点区切り記号の左側に 4 つ以上の桁がある数値内の数百から数千を区切ります。 桁区切り記号の標準使用は、桁のプレースホルダー ( 0 または # ) で囲まれた桁区切り記号が書式に含まれている場合に指定されます。 隣接する 2 つの桁区切り記号または桁区切り記号 (10 進数が指定されているかどうかに関係なく) の直ちに左の桁区切り記号は、"1000 で除算して、必要に応じて丸める" を意味します。たとえば、書式指定文字列 "##0" を使用して、1 億を 100 として表すことができます。 100 万より小さい数値は 0 と表示されます。 小数点区切り記号のすぐ左側以外の任意の位置にある 2 つの隣接する桁区切り記号は、単に桁区切り記号の使用を指定するものとして扱われます。 書式設定された出力で桁区切り記号として使用される実際の文字は、システムによって認識される数値形式によって異なります。
( : ) 時刻の区切り記号。 ロケールによっては、他の文字を使用して時刻区切り記号が表される場合があります。 時刻の値を書式設定するときに、時刻区切り記号で時、分、秒を区切ります。 書式設定された出力で時刻区切り記号として実際に使用される文字は、システム設定によって決まります。
( / ) 日付の区切り記号。 ロケールによっては、他の文字を使用して日付区切り記号が表される場合があります。 日付の値を書式設定するときに、日付区切り記号で日、月、年を区切ります。 書式設定された出力で日付区切り記号として実際に使用される文字は、システム設定によって決まります。
( E- E+ e- e+ ) 科学的表記形式。 形式表現で、E-、E+、e-、e+ 以降に少なくとも 1 つの桁プレースホルダー (0 または #) がある場合、数値は科学的形式で表示され、E または e が数値とその指数の間に挿入されます。 桁プレースホルダーの数によって、指数の桁数が決まります。 負の指数の横にマイナス記号を付けるには、E- または e- を使用します。 負の指数の横にマイナス記号を付け、正の指数の横にプラス記号を付けるには、E+ または e+ を使用します。
- + $ ( ) これらのリテラル文字を表示します。 その他の Unicode 文字 (°、€、μ、² など) は、二重引用符 ( 0.0" °C" など) 内に入力または貼り付けることで含めることができます。 バックスラッシュは、特定の文字が解釈されそうな場合にのみそれをエスケープするために使用します(16進や\uエスケープを導入するものではありません)。
( \ ) 書式設定文字列内の次の文字を表示します。 リテラル文字として特別な意味を持つ文字を表示するには、その文字の前に円記号 (\) を付けます。 円記号自体は表示されません。 円記号の使用は、次の文字を二重引用符で囲むことと同じです。 円記号を表示するには、円記号を 2 つ続けて (\\) 使用します。 日付書式設定と時刻書式設定の文字 (a、c、d、h、m、n、p、q、s、t、w、/、:) は、リテラル文字、数値書式設定の文字 (#、0、%、E、e、コンマ、ピリオド)、文字列書式設定の文字 (@、&、<、>、!) として表示することはできません。
("ABC") 二重引用符 (" ") の内側にある文字列を表示します。

考慮事項と制限事項

  • 文字列型またはブール型のフィールドにカスタム書式指定文字列を設定することはできません。

詳細については、以下を参照してください: