Excel VBA中的.NumberFormat选项是什么?

时间:2013-12-18 01:36:18

标签: excel vba excel-vba excel-2010

您能告诉我Excel VBA中的.NumberFormat格式选项吗?您完全了解Excel 2010支持以下类型:

enter image description here

我知道我们可以将示例文本类型设置为:

.NumberFormat ="@"

或编号:

.NumberFormat = "0.00000"

您能告诉我VBA中其他类型的选项吗?

5 个答案:

答案 0 :(得分:70)

请注意,这是在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)

(我刚刚为自定义选择了一个随机条目)

答案 1 :(得分:18)

感谢这个问题(和答案),我发现了一种简单的方法来获取Excel提供的几乎任何格式的确切NumberFormat字符串。


如何获取任何Excel数字格式的NumberFormat字符串


第1步:在用户界面中,将单元格设置为您要使用的NumberFormat。

I manually formatted a cell to Chinese (PRC) currency

在我的例子中,我从“账号格式”组合框中包含的选项中选择了中国(PRC)货币。

第2步:展开“数字格式”下拉菜单,然后选择“更多数字格式...”。

Open the Number Format dropdown

第3步:在“数字”标签的“类别”中,点击“自定义”。

Click Custom

“示例”部分显示我应用的中文(PRC)货币格式。

“类型”输入框包含可以编程方式使用的NumberFormat字符串。

因此,在此示例中,我的中文(PRC)货币单元格的NumberFormat如下:

_ [$¥-804]* #,##0.00_ ;_ [$¥-804]* -#,##0.00_ ;_ [$¥-804]* "-"??_ ;_ @_ 

如果你为你想要的每个NumberFormat做了这些步骤,那么这个世界就是你的。

我希望这会有所帮助。

答案 2 :(得分:7)

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)"; } }
}

答案 3 :(得分:5)

在Excel中,您可以将Range.NumberFormat设置为任何字符串,就像在" Custom"中找到的那样。格式选择。基本上,您有两种选择:

  1. 一般,没有特定格式。
  2. 自定义格式化字符串,例如" $#,## 0",以准确指定您正在使用的格式。

答案 4 :(得分:0)

.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会自动将它们识别为标准格式。