我有一列由我的银行连接起来的文本值,就像典型的月度报表一样。
以下是一个例子(A240列):
OCT 26 BALANCEPROTECTOR PREMIUM $10.05
我正在尝试将单独列的值设置为美元金额的数值。这是当前在 G240 列中设置的当前公式:
=SEARCH("\$[0-9]{1,6}\.[0-9]{2}";CLEAN(A240))
我期望结果为 10.05,但结果显示为 33.00 美元(列设置为货币)。输入的原始值为 33,如果我按默认格式显示,则会显示。
我的正则表达式有问题吗,还是我只是缺少一些选项?我尝试显示 =CLEAN(A240),一切看起来都像在 A240 中一样,所以我知道公式接收了所有必要的数据。
有什么想法或者改进吗?
谢谢!
更新:
我意识到搜索函数返回的是正则表达式的位置,而不是字符串。读完这篇文章后,我更新了公式,现在它可以按预期工作了:
=VALUE(MID(CLEAN(A240);SEARCH("\$[0-9]{1,6}\.[0-9]{2}";CLEAN(A240))+1;LEN("\$[0-9]{1,6}\.[0-9]{2}")))
答案1
在 pnuts 的帮助下,我找到了不使用 REGEX 的 OpenOffice Calc 实现方法:
=RIGHT(A240;LEN(A240)-SEARCH("$";A240))
请注意分号的使用和缺失的括号。
使用 REGEX 解决了我在三月份的问题,我是这么解决的:
=VALUE(MID(CLEAN(A240);SEARCH("\$[0-9]{1,6}\.[0-9]{2}";CLEAN(A240))+1;LEN("\$[0-9]{1,6}\.[0-9]{2}")))
答案2
使用单引号。这适用于egrep
,但双引号不适用于egrep
。