【问题标题】:Currency format conversion货币格式转换
【发布时间】:2015-03-12 11:55:56
【问题描述】:

我的问题:将 Excel 范围从货币格式 (USD) 转换为另一种 (EUR),反之亦然。

Excel 中的美元格式看起来像 123,456.00
Excel 中的 EUR 格式看起来像 123 456,00

在美元值中,逗号是千位分隔符,. 是小数点 和 在欧元值中,空格是千位分隔符,逗号, 是小数点。

我在 VBA 中尝试过一些编码,但我是这方面的新手。

对构建用于 Excel 电子表格的 VBA 宏代码有帮助吗?

【问题讨论】:

  • 我的错,用 VBA 标签代替。对不起那个黑暗面
  • 这些是数值吗?无论您做什么,这些值始终相同 - 123456。使它们看起来不同的是单元格格式。

标签: excel vba format currency


【解决方案1】:

这个 UDF 将完成这项工作。复制并粘贴到模块中:

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

输出:

【讨论】:

  • @DarkSide 只需将函数复制并粘贴到模块中即可完美运行
【解决方案2】:

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

=TEXT(A1,"#,##0.00")

并在 C1 中输入:

=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

生产:

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

【讨论】:

  • 这就是我要找的。​​span>
  • @DarkSide 查看我的EDIT#1
  • 嗨,加里。如果我的 Windows 系统配置为英语(美国),它工作正常。但是由于我的 Windows 系统配置了 Euro,所以它不起作用。顺便问一下,公式有哪些挑战?感谢你们对我的帮助。黑暗面
  • @DarkSide 因为我的电脑是配置的美国我不知道如何帮助你。公式限制是格式是真正的静态对于EUR如果值改变必须刷新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
相关资源
最近更新 更多