Google 用于提取货币并将其从 € 或 £ 转换为 USD 的工作表公式

Google Sheets Formula to Extract and Convert Currency from € or £ to USD

我正在尝试执行以下操作:

  1. 检查 N/ANo 的单元格;如果它有其中任何一个,那么它应该输出 N/ANo
  2. 检查 £Yes 的单元格;如果它有其中之一,那么它将继续到第 3 步。如果它有 $,那么它应该重复与输出相同的输入。
  3. 使用以下方法从单元格中提取货币:REGEXEXTRACT(A1, "$\d+")REGEXEXTRACT(A1, "\£\d+")(我认为这是最好的方法)
  4. 使用 GoogleFinance("CURRENCY:EURUSD")GoogleFinance("CURRENCY:GBPUSD")
  5. 将其转换为 $ USD
  6. 输出原始单元格,但将第 3 步中提取的货币替换为第 4 步的输出。

示例:(原始 --> 输出

我无法使 IF 语句正常工作,我可以用普通代码执行此操作,但无法为电子表格公式计算出来。

我已经多次尝试修改@Rubén 的答案以包含 N/A 因为它不是表格错误,我也尝试了同样的方法使任何美元输入以美元形式出现(没有变化)但是我真的无法在 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 表达式的方法,但显然不是。

回复:Rubén 的最新代码 16/10/2016

我已将其修改为 =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),
        "$###,###"
      )
    )
  )))))
,"")
 )

此修复:

正如您在下图中看到的那样,两个红色单元格不太正确,因为我从未想过这种情况,两个值中的第二个值保留在输入形式中,而不是转换为美元。

直接回答

尝试

=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 .19          |
| 4 | Yes £10 per week | Yes .19 per week |
| 5 | Yes €5 (Next)    | Yes .49 (Next)    |
+---+------------------+---------------------+

说明

或函数

以上公式使用嵌套的 IF 函数来代替或使用 OR 函数。

REGEXTRACT

没有为每个货币符号使用 REGEXEXTRACT 函数,而是使用了正则表达式 OR 运算符。范例

REGEXEXTRACT(A1:A6, "[\£|\€]\d+")

使用了三个正则表达式,

  • 获取货币符号和金额[\£|\€]\d+
  • 获取金额[\£|\€](\d+)
  • 获取货币符号[(\£|\€])\d+

货币换算

不使用嵌套 IF 来处理货币换算率,而是使用 VLOOKUP 和数组。假设将来可以添加更多货币,这可以更容易地维护公式。