我的问题是我使用的是德语版的Excel,我的输入是美国数字格式。
我需要一个代码,将十进制百分比数字中的所有点更改为昏迷,但将百分比格式保留为单元格值。
Sub Makro1()
Columns("J:J").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
当我使用这个简单的宏将所有句点更改为逗号时,单元格的值将被格式化为文本,但我需要它的百分比。
答案 0 :(得分:1)
必须要说的是,这是一个繁琐的解决方法,我建议在Excel选项中更改十进制符号(在插入之前和之后),而不是使用此代码。
使用Replace
返回字符串而不是值的问题
所以你需要将字符串转换为数字。
55.52
If IsNumeric(Selection.Value) Then
Selection.Value = CDbl(Replace(Selection.Value, ".", ","))
End If
55.52%
Dim Text As String
Text = Selection.Value
If Right$(Text, 1) = "%" Then
Text = Left$(Text, Len(Text) - 1) 'remove % sign
If IsNumeric(Text) Then
With Selection
.Value = CDbl(Replace(Text, ".", ",")) / 100
.NumberFormat = "0.00%" 'change number format to percent
End With
End If
End If
请注意,我们需要将值除以100
,因为0,5552
代表55,52 %
。
答案 1 :(得分:1)
现在我只是让Makro将opionts更改为DecimalSeparator为“。”然后回到“,”它就可以了。
但谢谢你的帮助!
Sub Makro1()
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
End With
End Sub
Sub Makro2()
With Application
.DecimalSeparator = ","
.ThousandsSeparator = "."
End With
End Sub