根据不同列中逗号分隔列表中的匹配 ID 连接 ID 列表
Concatenate list of IDs based on matching IDs within a comma separated list in a different column
使用 google 张:
我有两列。
A 列是 ID 号列表:
N1
N2
N3
N4
N5
B 列是 A 列中与同一行上的 ID 号相关的其他 ID 号的逗号分隔列表:
N2,N3
N3,N4
(空)
(空)
N1
我正在尝试在第三列 C 列中创建一个公式,该公式将显示 A 列中与 B 列中输入的 ID 号相匹配的 ID 号的逗号分隔列表。
预期结果:
一个 | B | C
N1 | N2,N3 | N4,N5
氮气 | N3,N4 | N1
N3 | (空)| N1,N2
N4 | N1 | N2
N5 | N1 | (空)
我能得到的最接近的是这里的这个公式:
=arrayFormula({concatenate(rept(A:A&",",B:B=A2))})
但这只有在 B 列中没有输入多个项目时才有效,因此仅使用 "N4,N5" 将在 C 列中返回,而不是预期结果中显示的其余部分。
编辑(更新图片):我现在看到以下内容,似乎某处有错误:
这样试试:
=ARRAYFORMULA(IFERROR(VLOOKUP(A1:A,
{QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select Col1,count(Col1) group by Col1 pivot Col2"), "select Col1 offset 1", 0),
SUBSTITUTE(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(ISNUMBER(
QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select count(Col1) group by Col1 pivot Col2"), "offset 1", 0)),
QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select count(Col1) group by Col1 pivot Col2"), "limit 0", 1)&",", ))
,,999^99))), ",$", ), ", ", ",")}, 2, 0)))
使用 google 张: 我有两列。
A 列是 ID 号列表:
N1
N2
N3
N4
N5
B 列是 A 列中与同一行上的 ID 号相关的其他 ID 号的逗号分隔列表:
N2,N3
N3,N4
(空)
(空)
N1
我正在尝试在第三列 C 列中创建一个公式,该公式将显示 A 列中与 B 列中输入的 ID 号相匹配的 ID 号的逗号分隔列表。
预期结果:
一个 | B | C
N1 | N2,N3 | N4,N5
氮气 | N3,N4 | N1
N3 | (空)| N1,N2
N4 | N1 | N2
N5 | N1 | (空)
我能得到的最接近的是这里的这个公式:
=arrayFormula({concatenate(rept(A:A&",",B:B=A2))})
但这只有在 B 列中没有输入多个项目时才有效,因此仅使用 "N4,N5" 将在 C 列中返回,而不是预期结果中显示的其余部分。
编辑(更新图片):我现在看到以下内容,似乎某处有错误:
这样试试:
=ARRAYFORMULA(IFERROR(VLOOKUP(A1:A,
{QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select Col1,count(Col1) group by Col1 pivot Col2"), "select Col1 offset 1", 0),
SUBSTITUTE(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(ISNUMBER(
QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select count(Col1) group by Col1 pivot Col2"), "offset 1", 0)),
QUERY(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(B1:B, ","))<>"", "♦"&SPLIT(B1:B, ",")&"♠"&A1:A, ))
,,999^99)),,999^99), "♦"))), "♠"),
"select count(Col1) group by Col1 pivot Col2"), "limit 0", 1)&",", ))
,,999^99))), ",$", ), ", ", ",")}, 2, 0)))