为了使问题尽可能简单:
在excel单元格A1中有一个数字值:0.11
我想将单元格格式化为百分比值,但没有%符号。
我想要:11
;不是11%
我没有问如何在常规excel中执行此操作;它必须是VBA。。
我猜想Range("A1").NumberFormat = ....
是路要走;但是使用此方法时,总是会显示%符号。
有没有一种格式可以在没有百分号的情况下格式化? 请注意,该值不能更改,必须保持0.11。
答案 0 :(得分:1)
尝试一下
Range("A5").NumberFormat = "0.00" & Chr(10) & "%"
Range("A5").WrapText = True
答案 1 :(得分:1)
这是一种解决方法,但请尝试以下方法:
Sub Test()
Dim i As Long
Dim STRNG As String
For i = 2 To Range("A1").Height / 11.25
STRNG = STRNG & Chr(10)
Next i
Debug.Print STRNG
Range("A1").NumberFormat = STRNG & "0" & Chr(10) & "%"
End Sub
它将查看单元格的高度,并计算出隐藏“%”号所需的换行符。
您可能想要添加它,例如在更改表事件时调用它,而不是仅查看单元格A1,然后从A1循环到A&Lastrow .....
或将其分配给远程按钮区
答案 2 :(得分:1)
另一种解决方法是显示单元格内容x100。
Sub Macro1()
Dim cell As Range
For Each cell In Range("A:A") ' Change with your Range
If cell.Value > 0 Then
cell.NumberFormat = Str(cell.Value * 100)
End If
Next cell
End Sub
这可以工作,但是每次更改都必须重新运行。例如,在工作表中使用以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Call Macro1
End If
End Sub
Sub Macro1()
Dim cell As Range
For Each cell In Range("A:A") ' Change with your Range
If cell.Value > 0 Then
cell.NumberFormat = Str(cell.Value * 100)
End If
Next cell
End Sub
答案 3 :(得分:0)
这将按要求工作:
Private Sub remove_percent(where As Range)
Dim cell As Range
For Each cell In where
If (cell.NumberFormat = "0.00") Then
cell = Round(cell * 100, 0)
cell.NumberFormat = "0"
' if we exceed 100%, let's round it to 100
If (cell > 100) Then
cell = 100
End If
End If
Next cell
End Sub
然后您可以通过以下方式调用它(例如):
Call remove_percent(Range("A1:A5"))