Excel VBAの.NumberFormat
形式オプションについて教えてください。ご存じのとおり、Excel 2010は次のタイプをサポートしています。
たとえば、テキストタイプを次のように設定できることを知っています。
.NumberFormat ="@"
または番号用:
.NumberFormat = "0.00000"
VBAのタイプのその他のオプションについて教えてください。
これはExcel for Mac 2011で行われましたが、Windowsでも同じであることに注意してください
マクロ:
Sub numberformats()
Dim rng As Range
Set rng = Range("A24:A35")
For Each c In rng
Debug.Print c.NumberFormat
Next c
End Sub
結果:
General General
Number 0
Currency $#,##0.00;[Red]$#,##0.00
Accounting _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)
Date m/d/yy
Time [$-F400]h:mm:ss am/pm
Percentage 0.00%
Fraction # ?/?
Scientific 0.00E+00
Text @
Special ;;
Custom #,##0_);[Red](#,##0)
(カスタム用にランダムなエントリを選択しました)
この質問(および回答)のおかげで、Excelが提供するほぼすべての形式の正確なNumberFormat文字列を取得する簡単な方法を発見しました。
ステップ1:ユーザーインターフェイスで、使用するNumberFormatにセルを設定します。
この例では、「Account Numbers Format」コンボボックスに含まれるオプションから中国(PRC)通貨を選択しました。
手順2:[数値形式]ドロップダウンを展開し、[その他の数値形式...]を選択します。
ステップ:[番号]タブの[カテゴリ]で、[カスタム]をクリックします。
「サンプル」セクションには、適用した中国語(PRC)通貨フォーマットが表示されます。
「タイプ」入力ボックスには、プログラムで使用できるNumberFormat文字列が含まれています。
したがって、この例では、中国語(PRC)通貨セルのNumberFormatは次のとおりです。
_ [$¥-804]* #,##0.00_ ;_ [$¥-804]* -#,##0.00_ ;_ [$¥-804]* "-"??_ ;_ @_
希望するNumberFormatごとにこれらの手順を実行する場合、世界はあなたのものです。
これがお役に立てば幸いです。
doversは彼に素晴らしい答えを与え、それに基づいて次のように使用してみることができます
public static class CellDataFormat
{
public static string General { get { return "General"; } }
public static string Number { get { return "0"; } }
// Your custom format
public static string NumberDotTwoDigits { get { return "0.00"; } }
public static string Currency { get { return "$#,##0.00;[Red]$#,##0.00"; } }
public static string Accounting { get { return "_($* #,##0.00_);_($* (#,##0.00);_($* \" - \"??_);_(@_)"; } }
public static string Date { get { return "m/d/yy"; } }
public static string Time { get { return "[$-F400] h:mm:ss am/pm"; } }
public static string Percentage { get { return "0.00%"; } }
public static string Fraction { get { return "# ?/?"; } }
public static string Scientific { get { return "0.00E+00"; } }
public static string Text { get { return "@"; } }
public static string Special { get { return ";;"; } }
public static string Custom { get { return "#,##0_);[Red](#,##0)"; } }
}
Excelでは、「カスタム」形式の選択で見つかるように、Range.NumberFormat
を任意の文字列に設定できます。基本的に、2つの選択肢があります。
.NETライブラリ EPPlus は、文字列定義から組み込みの番号への会話を実装します。クラス ExcelNumberFormat を参照してください:
internal static int GetFromBuildIdFromFormat(string format)
{
switch (format)
{
case "General":
return 0;
case "0":
return 1;
case "0.00":
return 2;
case "#,##0":
return 3;
case "#,##0.00":
return 4;
case "0%":
return 9;
case "0.00%":
return 10;
case "0.00E+00":
return 11;
case "# ?/?":
return 12;
case "# ??/??":
return 13;
case "mm-dd-yy":
return 14;
case "d-mmm-yy":
return 15;
case "d-mmm":
return 16;
case "mmm-yy":
return 17;
case "h:mm AM/PM":
return 18;
case "h:mm:ss AM/PM":
return 19;
case "h:mm":
return 20;
case "h:mm:ss":
return 21;
case "m/d/yy h:mm":
return 22;
case "#,##0 ;(#,##0)":
return 37;
case "#,##0 ;[Red](#,##0)":
return 38;
case "#,##0.00;(#,##0.00)":
return 39;
case "#,##0.00;[Red](#,#)":
return 40;
case "mm:ss":
return 45;
case "[h]:mm:ss":
return 46;
case "mmss.0":
return 47;
case "##0.0":
return 48;
case "@":
return 49;
default:
return int.MinValue;
}
}
これらの形式のいずれかを使用すると、Excelはそれらを自動的に標準形式として識別します。