在 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 公式需要根据包含有效名称选项列表的辅助列作为条件。
逻辑:
- 如果辅助列匹配 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 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))))
我有 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 公式需要根据包含有效名称选项列表的辅助列作为条件。
逻辑:
- 如果辅助列匹配 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 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))))