Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 获取要以正确格式显示的百分比值_Excel_Vba - Fatal编程技术网

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

Excel 获取要以正确格式显示的百分比值,excel,vba,Excel,Vba,我有两张工作表,上面有来自不同来源的数据。我需要将数据复制到单个工作表并删除重复项。为了实现这个目标,我需要两个工作表上的所有数据格式相同。所有这些都已经被编码了,除了一列我遇到问题的数据。这些列包含百分比的表示形式。在工作表A中,该值显示为.4386,相当于43.86%。我使用以下代码来转换值而不会出现问题: 工作表(“验证”).范围(“F2:F2000”).NumberFormat=“0.00%” 在工作表B中,相同的数据显示为43.86,但上面的代码将其更改为4386.00%。我还尝试将此

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

工作表(“验证”).范围(“F2:F2000”).NumberFormat=“0.00%”


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

您的意思是,工作表A
上的.4386与工作表B上的
43.86是相同的数据[…]因此,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
作为答案。

您的意思是,工作表a
上的.4386与工作表B上的
43.86是相同的数据[…]因此,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中提问,您将得到一个
TRUE
作为答案。

很抱歉评论中的回复太慢-我将只提交一个答案

就像拉尔夫说的,最好确保他们是同一个号码

For Each c In [A1:A10]
    If c.Value < 1 Then
        c.Value = c.Value * 100
    End If
    c.NumberFormat = "0.00\%"
Next c
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
[A1:A10]中每个c的

如果c.值小于1,则
c、 值=c.值*100
如果结束
c、 NumberFormat=“0.00\%”
下一个c
结果:


很抱歉评论中的回复太慢-我将只提交一个答案

就像拉尔夫说的,最好确保他们是同一个号码

For Each c In [A1:A10]
    If c.Value < 1 Then
        c.Value = c.Value * 100
    End If
    c.NumberFormat = "0.00\%"
Next c
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
[A1:A10]中每个c的

如果c.值小于1,则
c、 值=c.值*100
如果结束
c、 NumberFormat=“0.00\%”
下一个c
结果:


.NumberFormat=“General%”
适合我。@user1274820 Ok。我有两件事要补充。首先,(直到现在我才知道),柱子的宽度很重要。我扩大了宽度,它显示了43.86%。然而,列中的其他一些单元格的数据显示为25.1%。我需要这个显示为25.10%。我需要保留两个小数点。如何使用
.NumberFormat=“General\%”
而不必对单元格应用格式?如果单元格已采用百分比格式,请尝试使用
0.00\%
。否则,请使用
0.00%
。你可以像拉尔夫所说的那样,通过检查它们是否小于一,或者你是否已经知道这些工作表的格式。
.NumberFormat=“General%”
适合我。@user1274820 Ok。我有两件事要补充。首先,(直到现在我才知道),柱子的宽度很重要。我扩大了宽度,它显示了43.86%。然而,列中的其他一些单元格的数据显示为25.1%。我需要这个显示为25.10%。我需要保留两个小数点。如何使用
.NumberFormat=“General\%”
而不必对单元格应用格式?如果单元格已采用百分比格式,请尝试使用
0.00\%
。否则,请使用
0.00%
。你可以像拉尔夫说的那样,通过检查它们是否小于一,或者你是否已经知道这些表格是如何格式化的来确定这一点。我的陈述是错误的。这两份工作表(A和B)来自两个不同的小组,他们希望看到43.86%的工作表采用不同的格式,以供自己使用。A组需要显示为.4386,B组需要显示为整数(43.86)。我的目标是将这两组数字转换成我需要的格式,以便在一张工作表上比较两张工作表中的所有数据。这是将要比较的列之一(我将对比10个总值,但这是两个组对值进行不同格式设置的唯一列)。我的陈述不正确。这两份工作表(A和B)来自两个不同的小组,他们希望看到43.86%的工作表采用不同的格式,以供自己使用。A组需要显示为.4386,B组需要显示为整数(43.86)。我的目标是得到这两组数字