excel VBA格式功能,自定义格式设置数字为百万与一个DP不工作

llycmphe  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(171)

我正在Excel 2010中运行一些VBA,以便将电子表格中的表格中的数字输出到外部PowerPoint演示文稿中。由于涉及的数字种类繁多,我使用宏阅读的表中指定的自定义格式化字符串来确定输出格式,如下所示:

CellData = Format(SourceData,FormattingCode)

我已经能够让这个工作几乎没有困难的数字在数百万(0,,)和百分比(0。然而,我现在想要以百万为单位的数字,但显示一个小数位,即1,200,000应该呈现为1。2
用于执行此操作的格式代码通常为(0.0,,),我可以看到它在正常的单元格格式设置中工作。然而,当我将其传递给format函数时,我得到了一个未舍入到小数点后一位的数字,没有像1200000这样的分隔符。0.
知道为什么吗我知道Format函数与自定义格式略有不同,因为它不支持任何单元格对齐功能,原因很明显,但我不明白为什么这应该有所不同。有谁知道我怎样才能得到输出我想要的格式的函数?
非常感谢

vq8itlhq

vq8itlhq1#

#,0,,.0
这在SSRS RDL中的format()函数中起作用。我真正的完整漂亮的是[#,0,,.0M;(#,0,,.0M);'']

14ifxucb

14ifxucb2#

VBA Format()函数将与一些数字格式斗争,将一个大值转换为具有1个小数位的数百万,我使用这个。

Sub formatMillionsWithOneDecimal()

    Dim totalThisYear As Long
    Dim totalThisYearString As String

    totalThisYear = 17634600

    totalThisYearString = Format(totalThisYear, "£#,0,,.0M,")

    Debug.Print totalThisYearString

End Sub

这将输出:

£17.6M
v1l68za4

v1l68za43#

VBA格式函数无法处理此格式字符串。所以:

Sub dural()
    Dim SourceData As Long
    Dim CellData As String
    SourceData = 1200000
    CellData = Format(SourceData, "0.0,,")
    MsgBox CellData
End Sub

将生成错误的字符串。使用这个代替:

Sub dural2()
    Dim SourceData As Long, D As Double
    Dim CellData As String

    SourceData = 1200000
    D = SourceData / 1000000
    CellData = Format(D, "0.0")

    MsgBox CellData
End Sub

EDIT#1:

用一个单元格,用数字处理它。格式化它。转换为字符串:

Sub dural3()
    Dim SourceData As Long, D As Double
    Dim CellData As String, r As Range
    Set r = Range("A1")
    SourceData = 1200000
    D = SourceData / 1000000

    With r
        .Clear
        .Value = D
        .NumberFormat = "0.0"
        .Value = .Text         'convert to text
        CellData = .Value
    End With
    MsgBox CellData
End Sub

相关问题