Excel VBA - 添加自定义数字格式

时间:2015-01-14 18:37:25

标签: excel excel-vba vba

我有一个文件,在Excel之外生成,有很多百分比。所有这些百分比都有一个小数位。导入到Excel时,Excel会在百分比中添加第二个小数位 - 这似乎是Excel中百分比的一些默认格式。它只是添加了一个“0”。

我想将所有双小数位百分比格式化为单个小数点。如果我手动执行此操作,使用CTRL + H,查找格式/替换格式,它会很顺利。但我无法通过VBA /宏执行此操作,即使我在手动执行替换时记录宏。录制宏生成的代码如下:

Application.FindFormat.NumberFormat = "0.00%"
Application.ReplaceFormat.NumberFormat = "0.0%"
Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True

失败发生在:

Application.ReplaceFormat.NumberFormat = "0.0%"

经过大量试验和错误,我发现新格式需要在自定义格式列表中。但是默认情况下不存在单小数位百分比。如果我手动将单个单元格格式化为所需的格式,宏将起作用。当然,我不想对每个文件都这样做。

非常感谢任何意见。

提前致谢!

2 个答案:

答案 0 :(得分:4)

如果您将自定义数字格式应用于单个单元格,它将被“列出”并随后可用于批量替换操作以供将来使用。我可能会推荐使用像

这样的东西
 .range("A1").NumberFormat = "0.0%;@"

该特定格式掩码可应用于具有百分比或文本的任何单元格。如果您的列标题标签带有文本值并应用了CNF,则;@部分会强制文本显示(不做更改)。通过这种方式,您可以了解更多可能性,其中您放置了第一个CNF。使用一次后,它将可用于剩余百分比值的批量更换操作。

答案 1 :(得分:1)

考虑简单:

Sub dural()
    Dim r As Range
    For Each r In ActiveSheet.UsedRange
        If r.NumberFormat = "0.00%" Then
            r.NumberFormat = "0.0%"
        End If
    Next r
End Sub
相关问题