在 Google 工作表中使用 ARRAYFORMULA 根据辅助列数据有条件地进行 CONCAT

Conditionally CONCAT based on helper column data using ARRAYFORMULA in Google Sheets

我有 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)。

Objective: CONCAT 公式需要根据包含有效名称选项列表的辅助列作为条件。

逻辑:

使用辅助列的预期结果

[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 Sheet: Click Here

看看这是否适合你:

=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))))