以下是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
答案 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:您可以(并且应该)删除所有activate
和select
命令 - 它们不是必需的。
答案 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