2016-02-29 107 views
1

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

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

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

+0

'.NumberFormat = “常规%”'为我工作。 – user1274820

+0

@ user1274820好的。我在这里添加两件事。首先,(直到现在我从来不知道),列的宽度很重要。我扩大了宽度,它确实显示了43.86%。但是,列中的一些其他单元格的数据显示为25.1%。我需要这个显示为25.10%。我需要保留两位小数点。我怎么能用'.NumberFormat =“General \%”'做到这一点,而不必将格式应用于单元格? –

+0

如果它们已经是百分比格式,请尝试'0.00 \%'。否则,使用'0.00%'。你可以像拉尔夫所说的那样,通过检查它们是否小于1,或者你已经知道这些表格是如何格式化的。 – user1274820

回答

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

+0

当我尝试这个时,我收到一个指向“c”的变量未定义错误。 –

+0

'Dim c'如果使用明确的选项... – user1274820

+0

代码仅仅是一个例子。您将需要遍历范围并相应地修改数据。我不知道你的范围是可变的,或者他们是如何设置的。如果它是'F2:F2000',你可以使用它而不是'[A1:A10]'。 – user1274820

1

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

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

请注意,只是让数字“看起来相似”,他们是不一样的。例如:在单元格A1中写入值1000,在单元格B1中写入1000.然后将A1的数字格式更改为0,将B1的数字格式更改为0,(或在美国以外的地方更改为0.)。 A1将显示1000,而B1将显示1。如果您在单元格C1 =A1=B1中询问,您将得到一个TRUE作为答案。

+0

我确实说错了。两张工作表(A和B)来自两个不同的团体,他们希望以不同的格式出现43.86%用于他们自己的目的。 A组需要它显示为.4386,而B组需要它显示为整数(43.86)。我的目标是将这两组数字转换为我需要的格式,以便比较一张工作表上两个工作表中的所有数据。这是将要比较的列之一(总共有10个值将与我进行比较,但这是两个组中格式化值不同的唯一值)。 –