VLOOKUP/Transpose 多个 IDs/search 键同时出现在 Google 个工作表上
VLOOKUP/Transpose multiple IDs/search keys at once on Google Sheets
我目前有一个 sheet,我可以在其中将项目列表从一个 sheet 转换为另一个(行到列)。
我想知道是否有办法让我可以一次拉取多个搜索 keys/IDs 并让它一次自动填充为列格式。
目前:
- 数据 Sheet 选项卡:我的商品 ID(例如“11111”)和我的商品标签(例如快乐)。
- 转置 Sheet 选项卡:如果我将 ID(存在于“数据 Sheet”选项卡中)输入 A2,它会为我转置标签。
- 目标:如果可以一次输入多个项目 ID 并如图所示填充它(因此一次调换多个项目及其标签)。
可能是像 INDEX、MATCH 或辅助列之类的东西,或者与 SQL 查询相关的东西,以便按...排序?谢谢!
这是测试 sheet!: link
=ARRAYFORMULA(QUERY(QUERY(SPLIT(FLATTEN('Data Sheet'!A2:A&"♦︎"&'Data Sheet'!B2:F),"♦︎"),"select * where Col2 is not null",0),CONCATENATE("select * where Col1='",JOIN("' or Col1='",SPLIT(A2,",")),"'"),0))
这是一个有效的公式:
=query(
{
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!B2:B;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!C2:C;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!D2:D;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!E2:E;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!F2:F
},
"select Col1, Col2 where Col1 is not null and Col2 is not null and (Col1='" & SUBSTITUTE(A2, ",", "' or Col1='") & "') order by Col1"
)
主要思想是:
={
A1:A3,B1:B3;
A1:A3,C1:C3
}
将生成
={
A1,B1;
A2,B2;
A3,B3;
A1,C1;
A2,C2;
A3,C3
}
所以要生成所有你可以做的对
={
A2:A,B2:B;
A2:A,C2:C;
A2:A,D2;D;
...
}
现在,第一列中的值被解释为数字,因此我们需要将它们转换为文本以便能够进行比较。所以我用 arrayformula(to_text(A2:A))
替换了 A2:A
。然后我明确地指定 sheet 名称。
现在我们有了所有的对(包括空对),我们可以使用查询来过滤掉它们。过滤器的第一部分是删除没有任何值的行。第二部分生成并过滤搜索键。这个工作原理如下:我们需要从 x,y,z
得到 (Col1='x' or Col1='y' or Col1='z')
。如果我们将 ,
替换为 ' or Col1='
,您会看到我们得到了中间部分。我们用替代品来做到这一点。所以与查询的其余部分连接起来,我们就明白了!
参考资料
我目前有一个 sheet,我可以在其中将项目列表从一个 sheet 转换为另一个(行到列)。
我想知道是否有办法让我可以一次拉取多个搜索 keys/IDs 并让它一次自动填充为列格式。
目前:
- 数据 Sheet 选项卡:我的商品 ID(例如“11111”)和我的商品标签(例如快乐)。
- 转置 Sheet 选项卡:如果我将 ID(存在于“数据 Sheet”选项卡中)输入 A2,它会为我转置标签。
- 目标:如果可以一次输入多个项目 ID 并如图所示填充它(因此一次调换多个项目及其标签)。
可能是像 INDEX、MATCH 或辅助列之类的东西,或者与 SQL 查询相关的东西,以便按...排序?谢谢!
这是测试 sheet!: link
=ARRAYFORMULA(QUERY(QUERY(SPLIT(FLATTEN('Data Sheet'!A2:A&"♦︎"&'Data Sheet'!B2:F),"♦︎"),"select * where Col2 is not null",0),CONCATENATE("select * where Col1='",JOIN("' or Col1='",SPLIT(A2,",")),"'"),0))
这是一个有效的公式:
=query(
{
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!B2:B;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!C2:C;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!D2:D;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!E2:E;
arrayformula(to_text('Data Sheet'!A2:A)),'Data Sheet'!F2:F
},
"select Col1, Col2 where Col1 is not null and Col2 is not null and (Col1='" & SUBSTITUTE(A2, ",", "' or Col1='") & "') order by Col1"
)
主要思想是:
={
A1:A3,B1:B3;
A1:A3,C1:C3
}
将生成
={
A1,B1;
A2,B2;
A3,B3;
A1,C1;
A2,C2;
A3,C3
}
所以要生成所有你可以做的对
={
A2:A,B2:B;
A2:A,C2:C;
A2:A,D2;D;
...
}
现在,第一列中的值被解释为数字,因此我们需要将它们转换为文本以便能够进行比较。所以我用 arrayformula(to_text(A2:A))
替换了 A2:A
。然后我明确地指定 sheet 名称。
现在我们有了所有的对(包括空对),我们可以使用查询来过滤掉它们。过滤器的第一部分是删除没有任何值的行。第二部分生成并过滤搜索键。这个工作原理如下:我们需要从 x,y,z
得到 (Col1='x' or Col1='y' or Col1='z')
。如果我们将 ,
替换为 ' or Col1='
,您会看到我们得到了中间部分。我们用替代品来做到这一点。所以与查询的其余部分连接起来,我们就明白了!