我收到一份包含销售预测摘录的 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) 非常容易安装并使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
到消除UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 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
然后,您可以解析其第一部分来决定应用什么转换率。