获取百分比值以正确的格式显示

时间:2016-02-29 22:16:09

标签: excel-vba vba excel

我有两个包含来自不同来源的数据的工作表。我需要将数据复制到单个工作表并删除重复项。为了实现这个目标,我需要在两个工作表上格式化相同的所有数据。所有这些都已经编码,除了我有问题的一列数据。这些列包含百分比表示。在工作表A中,该值显示为.4386,相当于43.86%。我使用此代码可以毫无问题地转换值:

Worksheets("Verification").Range("F2:F2000").NumberFormat = "0.00%"

在工作表B中,相同的数据显示为43.86,但上面的代码将其更改为4386.00%。我也尝试将此行更改为.NumberFormat = "General\%",这几乎可以正常工作,但返回值为44%。我需要在代码中添加什么才能在工作表B上显示43.86%?

2 个答案:

答案 0 :(得分:3)

很抱歉评论中的回复缓慢 - 我只会提交一个答案。

像拉尔夫说的那样,确保它们是相同的数字确实更好。

43.1.431的号码不同。

For Each c In [A1:A10]
    If c.Value < 1 Then
        c.Value = c.Value * 100
    End If
    c.NumberFormat = "0.00\%"
Next c

结果:

Results

答案 1 :(得分:1)

您在工作表B上的工作表A is the same data [...] as 43.86上声明.4386。因此,将43.86转换为4386.00%的Excel是正确的。也许您需要条件格式:当数字小于或等于1时,将其格式化为"0.00%",然后将其格式化为"0.00""%"""

然而,我认为在使用此解决方案比较工作表之间的数据时,您会遇到问题。因此,我会先将B表上的所有数字除以100,以使它们具有可比性。

请注意,仅仅通过制作数字&#34;看起来相似&#34;他们不一样。示例:在单元格A1中写入值1000,在单元格B1中也写入1000.然后将A1的数字格式更改为0,将B1的数字格式更改为0,(或更改为0.外部美国)。 A1将显示1000,而B1会显示1。如果您在单元格C1 =A1=B1中询问,则会得到TRUE作为答案。