Excel 2013 - 检测单元格货币格式

Excel 2013 - 检测单元格货币格式

我收到一份包含销售预测摘录的 Excel 文件。其中没有明确定义货币单位的列。货币单位仅以数字格式显示(英镑、欧元或瑞士法郎)。有人知道如何检测货币格式以便为不同货币应用适当的汇率吗?

例子:

单元格中显示的数字格式/实际数字

200,000 英镑 / 200000

10,000 瑞士法郎 / 10000

500,000 欧元 / 500000

非常感谢,Tym

答案1

尝试以下用户定义函数:

Public Function txet(r As Range) As String
    Dim s As String
    s = Replace(r.NumberFormat, Chr(34), "")
    txet = ""
    If Len(s) < 3 Then Exit Function
    s = Right(s, 3)
    txet = s
End Function

在此处输入图片描述

用户定义函数 (UDF) 非常容易安装并使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

消除UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

使用Excel 中的 UDF:

=txet(A1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

答案2

您可以在 VBA 中执行此操作。

Sub CheckFormat()
Dim myCell, j, LastRow
   Worksheets("Sheet1").Activate
   LastRow = Cells(Rows.Count, "A").End(xlUp).Row
   For j = 1 To LastRow
     Set myCell = Cells(j, "A")
     Debug.Print myCell.NumberFormat
   Next j
End Sub

我将您的样本放在 A1、A2 和 A3 中。上述代码输出以下内容:

[$英镑] #,##0.00

[$瑞士法郎] #,##0.00

[$欧元] #,##0.00

然后,您可以解析其第一部分来决定应用什么转换率。

相关内容