在单行中搜索 sheet 多个匹配项

Search sheet for multiple matches in a single row

我想修改以下 QUERY 或一些实现相同结果的公式变体,使其仅在列顶部输入一次并使用 [=13 填充下面的单元格=]

=IFERROR(QUERY(Items!$A:$T,"SELECT E,F,G,H,I,J,K,L,M,N,O,P,Q,R where A = '"&Estimate!A2&"' and B = '"&Estimate!B2&"' and C = '"&Estimate!C2&"' "&if(Estimate!D2<>"", "and D = '"&Estimate!D2&"'",)&" AND A is not null LIMIT 1", 0),"")

我的公式在 my spreadsheet 的 Estimate!G2 中。

我认为您必须使用 Vlookup,它不如 Query 方便。这是我目前所拥有的,但可能需要更多的工作才能在所有情况下获得与查询完全相同的结果(由于查询中的 ORDER 语句):

=ArrayFormula(if(A2:A="","",vlookup(A2:A&B2:B&C2:C&if(D2:D="","*",D2:D),{Items!A2:A&Items!B2:B&Items!C2:C&Items!D2:D,Items!A2:T},{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21},false)))

几乎是正确的,确切的公式是:

=ARRAYFORMULA(IF(LEN(A2:A), VLOOKUP(A2:A&B2:B&C2:C&IF(LEN(D2:D), D2:D, "*"), 
 {Items!A2:A&Items!B2:B&Items!C2:C&Items!D2:D,Items!A2:T}, 
 {6,7,8,9,10,11,12,13,14,15,16,17,18,19}, 0), ))