Excel 货币格式转换

Excel 货币格式转换,excel,vba,format,currency,Excel,Vba,Format,Currency,我的问题是:将Excel范围从一种货币格式(美元)转换为另一种货币格式(欧元),反之亦然 Excel中的美元格式类似于123456.00 Excel中的EUR格式看起来像123 456,00 其中,在USD值中,逗号是千位分隔符,是小数点 和 在EUR values中,空格是千位分隔符,逗号,是小数点 我试过用VBA编写代码,但我是这方面的新手 有没有关于构建VBA宏代码以便在Excel电子表格中使用的帮助?此自定义项将完成此工作。复制并粘贴到模块中: Function ConvertUSDTo

我的问题是:将Excel范围从一种货币格式(美元)转换为另一种货币格式(欧元),反之亦然

Excel中的美元格式类似于123456.00
Excel中的EUR格式看起来像123 456,00

其中,在USD值中,逗号是千位分隔符,
是小数点 和 在EUR values中,空格是千位分隔符,逗号
是小数点

我试过用VBA编写代码,但我是这方面的新手


有没有关于构建VBA宏代码以便在Excel电子表格中使用的帮助?

此自定义项将完成此工作。复制并粘贴到模块中:

Function ConvertUSDToEUR(Amount As Range) As String
Dim TempStr As String: TempStr = Amount.Value
TempStr = Replace(TempStr, ",", " ")
TempStr = Replace(TempStr, ".", ",")
ConvertUSDToEUR = TempStr
End Function
输出:


A1中输入值,在B1中输入:

=TEXT(A1,"#,##0.00")
=SUBSTITUTE(SUBSTITUTE(B1,","," "),".",",")
并在C1中输入:

=TEXT(A1,"#,##0.00")
=SUBSTITUTE(SUBSTITUTE(B1,","," "),".",",")
例如:

注意:

也可以“就地”转换值,但这需要VBA

编辑#1:

这里有两个宏将“就地”更改格式。因此,结果仍然是数字,但外观将发生变化。假设我们有一个数字列表(不是公式):

选择值并运行此宏:

Sub MakeUS()
    Dim r As Range
    For Each r In Selection
        r.NumberFormat = "#,##0.00"
    Next r
End Sub
Sub MakeEUR()
    Dim r As Range, v1 As String, v2 As String, DQ As String
    DQ = Chr(34)
    For Each r In Selection
        v1 = Format(r.Value, "#,##0.00")
        v2 = Replace(Replace(v1, ",", " "), ".", ",")
        r.NumberFormat = DQ & v2 & DQ & ";;;"
    Next r
End Sub
制作:

这个宏:

Sub MakeUS()
    Dim r As Range
    For Each r In Selection
        r.NumberFormat = "#,##0.00"
    Next r
End Sub
Sub MakeEUR()
    Dim r As Range, v1 As String, v2 As String, DQ As String
    DQ = Chr(34)
    For Each r In Selection
        v1 = Format(r.Value, "#,##0.00")
        v2 = Replace(Replace(v1, ",", " "), ".", ",")
        r.NumberFormat = DQ & v2 & DQ & ";;;"
    Next r
End Sub
制作:


如果列包含公式,则方法会略有不同。

我的错,请改为VBA标记。对不起,那些是数值吗?无论您做什么,值始终相同-
123456
。是单元格格式使它们看起来不一样。这就是我要找的。@DarkSide查看我的编辑#1Hi Gary。如果我的windows系统配置为英语(美国),它可以正常工作。但由于我的windows系统配置了Euro,因此无法正常工作。顺便问一下,公式有什么挑战?谢谢你帮助我。黑暗的Side@DarkSide由于我的电脑是美国配置的,我不知道如何帮助你。公式的限制是,格式对于EUR来说是真正静态的,如果值发生变化,则必须刷新。@DarkSide它工作得很好,只需将函数复制并粘贴到模块中即可