在 Google 表格中使用 ARRAYFORMULA 有条件地基于辅助列数据进行 CONCAT

Posted

技术标签:

【中文标题】在 Google 表格中使用 ARRAYFORMULA 有条件地基于辅助列数据进行 CONCAT【英文标题】:Conditionally CONCAT based on helper column data using ARRAYFORMULA in Google Sheets 【发布时间】:2021-07-27 11:29:19 【问题描述】:

我有 2 列名称(名称 1,名称 2),我想将它们合并为一列。

[CURRENT DATA SET]    [FORMULA - CONCAT]
|   A   |   B   |     |      D      |
| Name1 | Name2 |     | Name1_Name2 |     
| Name3 | Name4 |     | Name3_Name4 |   
| Name5 | Name6 |     | Name5_Name6 |

这部分正在使用我的 ARRAYFORMULA:

=ARRAYFORMULA(
  IF(
    ISBLANK(B4:B),
      CONCAT(A4:A,B4:B),
      CONCAT(A4:A,("_"&B4:B))
  )
)

问题出在这里:有时我需要 CONCAT 公式将 B 列放在首位,然后是 A 列(示例 Name2_Name1)。

目标: CONCAT 公式需要基于包含有效名称选项列表的辅助列进行条件化。

逻辑:

如果辅助列与 CONCAT 匹配,则为 CONCAT ColumnA_ColumnB。 如果辅助列与 CONCAT 不匹配,则为 ColumnB_ColumnA。 如果仍然不匹配,请留空。

使用辅助列的预期结果

[CURRENT DATA SET]  [Helper Column]   [EXPECTED RESULTS]
|   A   |   B   |   |      C      |   |      D      |
| Name1 | Name2 |   | Name1_Name2 |   | Name1_Name2 |     
| Name3 | Name4 |   | Name6_Name5 |   | Name3_Name4 |   
| Name5 | Name6 |   | Name3_Name4 |   | Name6_Name5 |
| Name7 |       |   | Name5       |   |             |
| Name5 |       |   | Name8       |   | Name5       |

是否可以创建一个数组公式来实现这些预期结果?

这是我的 Google 表格:Click Here

【问题讨论】:

【参考方案1】:

看看这是否适合你:

=ArrayFormula(IFERROR(IFERROR(VLOOKUP(A4:A&IF(LEN(B4:B), "_"&B4:B,), D4:D, 1, 0), VLOOKUP(IF(LEN(B4:B), B4:B&"_",)&A4:A, D4:D, 1, 0))))

【讨论】:

哇!非常令人印象深刻。这完美!谢谢JP!

以上是关于在 Google 表格中使用 ARRAYFORMULA 有条件地基于辅助列数据进行 CONCAT的主要内容,如果未能解决你的问题,请参考以下文章

在 Google 表格中使用日期

在 Google 表格中使用 BigQuery,如何授予其他用户按“刷新”的权限?

在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格

在 Google 表格中查询

搜索值,然后在Google表格中查找并使用google apps脚本在html中显示行值

如何在 Google 电子表格中使用日期添加功能?