给定一组数据,有没有一种简单的方法可以找到多个 header 列?
Is there an easy way to find multiple header columns given a set of data?
我有一个 sheet 看起来像这样:
我想要一个公式来查询 A2:E7 中的数据并从 A1:E1 中提取相应的列 headers。诀窍是值可能会出现不止一次。
示例结果如下所示:
示例 sheet:https://docs.google.com/spreadsheets/d/1Zr_q8nwYPixUjxWYdT-WlQLiGIUzqoK_cSQXSp19nJg
建议:
如果您可以编写脚本(工具 -> 脚本编辑器),您可以为此创建自定义公式:
function CUSTOMLOOKUP(key, headers, table) {
var result = [[]];
for (i = 0; i < table.length; i++) {
for (j = 0; j < table[i].length; j++) {
if (key == table[i][j]) {
result[0].push(headers[0][j]);
}
}
}
return result;
}
保存后,在您的电子表格中,CUSTOMLOOKUP
现在可以用作:
=CUSTOMLOOKUP($G1,$A:$E,$A:$E)
然后向下拖动到其余值。
输出:
如果您想开始编写脚本,网上有很多 JavaScript references and tutorials。
使用:
=ARRAYFORMULA(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G,
SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")),
"select Col1,max(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))))
更新:
=ARRAYFORMULA(ARRAY_CONSTRAIN(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G,
SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")),
"select Col1,max(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))), 9^9, 2))
我有一个 sheet 看起来像这样:
我想要一个公式来查询 A2:E7 中的数据并从 A1:E1 中提取相应的列 headers。诀窍是值可能会出现不止一次。
示例结果如下所示:
示例 sheet:https://docs.google.com/spreadsheets/d/1Zr_q8nwYPixUjxWYdT-WlQLiGIUzqoK_cSQXSp19nJg
建议:
如果您可以编写脚本(工具 -> 脚本编辑器),您可以为此创建自定义公式:
function CUSTOMLOOKUP(key, headers, table) {
var result = [[]];
for (i = 0; i < table.length; i++) {
for (j = 0; j < table[i].length; j++) {
if (key == table[i][j]) {
result[0].push(headers[0][j]);
}
}
}
return result;
}
保存后,在您的电子表格中,CUSTOMLOOKUP
现在可以用作:
=CUSTOMLOOKUP($G1,$A:$E,$A:$E)
然后向下拖动到其余值。
输出:
如果您想开始编写脚本,网上有很多 JavaScript references and tutorials。
使用:
=ARRAYFORMULA(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G,
SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")),
"select Col1,max(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))))
更新:
=ARRAYFORMULA(ARRAY_CONSTRAIN(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G,
SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")),
"select Col1,max(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))), 9^9, 2))