我正在尝试执行以下操作:
N/A
或No
的单元格;如果它具有其中任何一个,那么它应该输出N/A
或No
£
或€
或Yes
;如果它有其中之一那么它将继续步骤3.如果它有$
那么它应该重复与输出相同的输入。REGEXEXTRACT(A1, "\$\d+")
或REGEXEXTRACT(A1, "\£\d+")
(我认为这是最佳方式)GoogleFinance("CURRENCY:EURUSD")
或GoogleFinance("CURRENCY:GBPUSD")
N/A
- > N/A
No
- > No
Alt
- > Alt
Yes
- > Yes
Yes £10
- > Yes $12.19
Yes £10 per week
- > Yes $12.19 per week
Yes €5 (Next)
- > Yes $5.49 (Next)
Yes $5 22 EA
- > Yes $5 22 EA
Yes £5 - £10
- > Yes $5.49 - $12.19
我无法使用正常的IF
语句,我可以在普通代码中执行此操作,但无法解决电子表格公式问题。
我已经尝试多次修改@Rubén的答案以包括N/A
,因为它不是Sheets错误,我也试过让任何USD输入以USD(没有变化)出现但我真的无法在Excel / Google表格中获得IF / OR / AND。
=ArrayFormula(
SUBSTITUTE(
A1,
OR(IF(A1="No","No",REGEXEXTRACT(A1, "[\£|\€]\d+")),IF(A1="N/A","N/A",REGEXEXTRACT(A1, "[\£|\€]\d+"))),
IF(
A1="No",
"No",
TEXT(
REGEXEXTRACT(A1, "[\£|\€](\d+)")*
IF(
"€"=REGEXEXTRACT(A1, "([\£|\€])\d+"),
GoogleFinance("CURRENCY:EURUSD"),
GoogleFinance("CURRENCY:GBPUSD")
),
"$###,###"
)
)
)
)
上面,我尝试在第一个IF语句之前添加一个OR()来尝试包含N/A
作为选项,在下面我尝试了它,你可以通过各种不同的方式看到它(替换行4与此)
IF(
OR(
A1="No",
"No",
REGEXEXTRACT(A1, "[\£|\€]\d+");
A1="No",
"No",
REGEXEXTRACT(A1, "[\£|\€]\d+")
)
)
但这也不起作用。我认为使用;
是一种分离OR表达式的方法,但显然不是。
我把它修改为= ArrayFormula( IF(NOT(ISBLANK(A2)),
IF(IFERROR(SEARCH("$",A2),0),A2,IF(A2="N/A","N/A",IF(A2="No","No",IF(A2="Alt","Alt",IF(A2="Yes","Yes",
SUBSTITUTE(
A2,
REGEXEXTRACT(A2, "[\£|\€]\d+"),
TEXT(
REGEXEXTRACT(A2, "[\£|\€](\d+)")
*
VLOOKUP(
REGEXEXTRACT(A2, "([\£|\€])\d+"),
{
{"£";"€"},
{GoogleFinance("CURRENCY:GBPUSD");GoogleFinance("CURRENCY:EURUSD")}
},
2,0),
"$###,###"
)
)
)))))
,"")
)
此修复:
Yes
只有单元格不再抛出#N / A Alt
正如你在下面的图片中看到的那样,两个红色单元格并不完全正确,因为我从未想过这个场景,这两个值中的第二个是保留在它的输入形式而不是转换为USD。
答案 0 :(得分:2)
尝试
=ArrayFormula( IF(IFERROR(SEARCH("$",A1:A6),0),A1:A6,IF(A1:A6="N/A","N/A",IF(A1:A6="No","No", SUBSTITUTE( A1:A6, REGEXEXTRACT(A1:A6, "[\£|\€]\d+"), TEXT( REGEXEXTRACT(A1:A6, "[\£|\€](\d+)") * VLOOKUP( REGEXEXTRACT(A1:A6, "([\£|\€])\d+"), { {"£";"€"}, {GoogleFinance("CURRENCY:GBPUSD");GoogleFinance("CURRENCY:EURUSD")} }, 2,0), "$###,###.00" ) ) ))) )
结果
+---+------------------+---------------------+ | | A | B | +---+------------------+---------------------+ | 1 | N/A | N/A | | 2 | No | No | | 3 | Yes £10 | Yes $12.19 | | 4 | Yes £10 per week | Yes $12.19 per week | | 5 | Yes €5 (Next) | Yes $5.49 (Next) | +---+------------------+---------------------+
相反或使用OR函数,上面的公式使用嵌套的IF函数。
不使用每个货币符号的REGEXEXTRACT函数,而是使用正则表达式OR运算符。实施例
REGEXEXTRACT(A1:A6, "[\£|\€]\d+")
使用了三个正则表达式,
[\£|\€]\d+
[\£|\€](\d+)
[(\£|\€])\d+
不使用嵌套IF来处理货币转换率,而是使用VLOOKUP和数组。假设未来可以添加更多货币,这可以更容易维持公式。