我有一系列不同货币的价值观。我想创建一个自动检测给定值货币的列,并将其转换为GPB(或任何其他给定货币)。
我有以下用于查询汇率的公式:
=INDEX(GoogleFinance("eurgbp","price",date(2014,9,15)),2,2)
但是,这需要您指定要转换的货币。我希望这是动态的,因为我的货币列表各不相同。
答案 0 :(得分:3)
您可以使用以下命令返回格式化值的文本字符串表示形式:
=TO_TEXT(A1)
因此,如果您将值35格式化为British Pound Sterling,则公式将返回字符串:
£35.00
现在,您可以将该字符串与查找表(可能使用REGEXMATCH)匹配,以返回GoogleFinance()所需的字符串。问题在于,例如美元的本地格式与澳元完全相同。但是,您可以设置自己的自定义数字格式(例如附加USD或AUD),这些格式将传递到TO_TEXT函数。
因此,您可能需要描述所有可能的货币格式,以获得更具体的解决方案。
答案 1 :(得分:3)
听起来你需要为货币列值提供某种编码。例如:
Currency
----------
USD, 10254 # $102.54
RMB, 1010 # ¥101.0
然后,您需要以某种方式解析该列值以确定货币类型。或者你可以有两列。一个用于货币类型,另一个用于货币值:
Type Currency
---- --------
USD 10254 # $102.54
RMB 1010 # ¥101.0
顺便说一下,货币栏是整数,所以你不必使用浮点数学,这在我的经验中是一件好事。
答案 2 :(得分:1)
正如AdamL所提到的,您需要检查数据列表中是否存在具有相同符号的货币。
如果没有,您可以执行以下操作:
Amt Text Amt Symbol
=========================================
(data) =TO_TEXT(A2) =left(B2,FIND(REGEXEXTRACT(B2,"[0-9\.\,]"),B2)-1)
这将从A列中获取您的货币符号。公式是找到第一次出现的数字(包括。和),然后您只需取其左侧的内容即可获得货币。
然后,您需要为每个符号提供一个表格,以符合其ISO 3字母代码,这样您就可以使用Google财经获取FX,例如:
Symbol ISO Ccy
======================================
$ USD
£ GBP
€ EUR
然后你可以通过使用VLOOKUP获得ISO ccy并继续上面的公式,在这里我为GBP做了FX
Amt Symbol FX Convert Amt
===================================================================================================
(formula above) =IF(D2="GBP",1,INDEX(GoogleFinance(D2&"GBP","price",<SOMEDATE>),2,2)) =E2*A2
我保存了一个示例here。