Excel VBA:修剪一个百分比的小数位数

时间:2017-09-20 06:21:28

标签: excel vba excel-vba

以下是excel vba代码的片段。我试图将百分比值和数值样本大小值(在不同的单元格中)组合成一个单元格

但是,%值有很多小数。即使我已将格式更改为仅显示1个十进制值,但当我单击该单元格时,它仍会显示多个小数位。因此,当我组合2个变量时,小数位的全长与样本大小相结合,这不是我想要的。

如何修剪这些不必要的小数位?

        For j = Row_SourceStart To Row_SourceEnd

            wbSource.Activate
            wbSource_ACX.Select
            Percentage_value = wbSource_ACX.Range("M" & j).NumberFormat = "0.0%"
            Sample_size = wbSource_ACX.Cells(j, 12)

            wbTarget.Activate
            Set wbTarget_ACX = wbTarget.Worksheets(ArrayWS_Source(0))
            wbTarget_ACX.Select
            wbTarget_ACX.Cells(Row_TargetStart, j + 5) = Percentage_value & " (" & Sample_size & ")"

        Next j

2 个答案:

答案 0 :(得分:0)

在VBA中,您可以使用round功能。

wbTarget_ACX.Cells(Row_TargetStart, j + 5) = Round(Percentage_value, 1) & " (" & Sample_size & ")"

如果您的百分比值已在表格中正确格式化,请使用单元格的text - 属性:

wbTarget_ACX.Cells(Row_TargetStart, j + 5) = wbSource_ACX.Range("M" & j).text & " (" & Sample_size & ")"

否则按您自己计算值(并添加%-sign)

Percentage_value = wbSource_ACX.Range("M" & j).Value * 100
wbTarget_ACX.Cells(Row_TargetStart, j + 5) = Round(Percentage_value, 1) & "% (" & Sample_size & ")"

BTW:您可以(并且应该)删除所有activateselect命令 - 它们不是必需的。

答案 1 :(得分:0)

单元格中的值仅形成为圆整百分比。 Excel将实际值存储为背景中的所有小数位。当您单击单元格并查看公式栏中的值时,您会看到这一点。

您可以通过多种方法将值修剪为VBA中的1位小数。 VBA中有Round函数,或者您可以使用其中一个也进行舍入的工作表函数。以下是一些示例(示例中的数字写在活动工作表的单元格A1中):

Sub test()
    Debug.Print Round(Range("a1"), 1)
    Debug.Print WorksheetFunction.Round(Range("a1"), 1)
    Debug.Print WorksheetFunction.RoundUp(Range("a1"), 1)
    Debug.Print WorksheetFunction.RoundDown(Range("a1"), 1)
End Sub