用德国百分比改变美国百分比

时间:2017-12-15 08:47:33

标签: excel vba excel-vba

我的问题是我使用的是德语版的Excel,我的输入是美国数字格式。

我需要一个代码,将十进制百分比数字中的所有点更改为昏迷,但将百分比格式保留为单元格值。

Sub Makro1()
    Columns("J:J").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

当我使用这个简单的宏将所有句点更改为逗号时,单元格的值将被格式化为文本,但我需要它的百分比。

2 个答案:

答案 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