求可处理重复输入及顺序的Google Sheets堆叠查询结果公式
Google Sheets 按输入顺序堆叠查询结果的公式解决方案
问题分析
你之前使用的公式:
=FLATTEN(ARRAYFORMULA(QUERY(A3:B10, "select B where A = '" & TEXTJOIN("' or A = '", TRUE, D3:D) & "'", 0)))
存在两个核心问题:
- 无法保留输入范围的顺序:QUERY返回的结果是按照原数据(A3:B10)中匹配项的顺序排列,而非输入范围(D3:D)的顺序
- 无法处理重复输入:即使D列有重复的查询值,QUERY只会返回一次对应的B值,不会重复输出
解决方案公式
使用MAP函数逐个遍历输入值,结合QUERY和FLATTEN实现需求:
=FLATTEN(MAP(D3:D, LAMBDA(x, QUERY(A3:B10, "select B where A = '"&x&"'", 0))))
公式逻辑说明
MAP(D3:D, LAMBDA(x, ...)):逐个遍历D3:D中的每个输入值x- 对每个
x执行QUERY(A3:B10, "select B where A = '"&x&"'", 0):单独查询A列等于当前输入值x的所有B列数据 FLATTEN:将每个QUERY返回的结果(可能是多行)按输入顺序堆叠成单一列
这样既会严格遵循输入范围的上下顺序,也会对重复的输入值重复输出对应的查询结果,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者user23576324
相关产品推荐
相关产品推荐

