我有此代码:
Sub NewSummary()
Set ws = ThisWorkbook.Sheets("Sheet1")
iWorking = 3
iTotal = 4
dPercent = iWorking / iTotal
pPercent = Format(dPercent, Percent)
sWorking = iWorking & " / " & iTotal
sWorking = Format(sWorking)
ws.Cells(1, 1).Value = sWorking
ws.Cells(2, 1).Value = pPercent
End Sub
我期望的输出是:
3/4,75.00%
但是我得到的是:
3月4日,0.75
Excel会覆盖“ 3/4”字符串,并假设我想要一个日期。我该如何抑制呢?为什么Format函数不能将0.75转换为75.00%?
答案 0 :(得分:2)
您不能像这样格式化字符串。 /
周围的空格是一个问题,但更普遍的是,将"3/4"
格式化为字符串文字依赖于某些隐式类型转换,在这种情况下,它假定为日期字符串(表示3月4日美国语言环境),这就是为什么您会获得类似日期的结果。
简单地做:
Option Explicit
Sub NewSummary()
Dim ws As Worksheet
Dim iWorking As Long, iTotal As Long
Dim dPercent As Double
Set ws = ThisWorkbook.Sheets("Sheet1")
iWorking = 3
iTotal = 4
dPercent = iWorking / iTotal
ws.Cells(1, 1).Value = Format(dPercent, "0.00%")
End Sub
答案 1 :(得分:0)
Named numeric formats,但它们不是您可以像其他任何变量一样使用的语言级关键字。如David所述,Percent
只是一个未声明的局部变量,它具有一个Variant/Empty
值(这意味着您的模块缺少Option Explicit
)。
在字符串文字中提供命名格式:
pPercent = Format(dPercent, "Percent")
尽管这可行,但我个人更喜欢使用explicit number formatting,这样您就可以对数字格式进行显式和完全控制;例如,如果您想要一个小数或需要两个以上的小数,则使用命名格式将不会删减它。