查询不返回所有值,还添加额外的 if 条件

Query not returning all values, also adding extra if conditions

我对下面链接的价差sheet 有疑问。我在 'testing summary' sheet 中删除了一些虚拟数据,并且在项目和季度 sheet 中设置了一个查询,因此我可以提取每个项目每个季度的结果.它一直奇怪地缺少我希望它提取的最后一列(到目前为止,P 和 AD 是唯一有数据的列),我无法弄清楚为什么。我正在使用:

=iferror(if(I4 = "Quarter 1", query('Testing summary'!A6:BC,"select B,E,F,G,H,I,J,K,L,M,N,P where E = '"&$J&"'"),if(I4="Quarter 2",query('Testing summary'!A6:BC,"select B,R,S,T,U,V,W,X,Y,Z,AB,AC,AD where R = '"&$J&"'"),if(I4="Quarter 3",query('Testing summary'!A6:BC,"select B,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP where AE = '"&$J&"'"),IF(I4="Quarter 4",query('Testing summary'!A6:BC,"select B,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC WHERE AR = '"&$J&"'"))))),"No results found")

由于 sheet 的设置方式,我认为季度条件必须在开头,它们告诉查询实际从何处导入。

我还希望能够按季度、项目和地区提取数据,并且可以在每个查询的末尾使用 AND 使其工作(在第 3 个 sheet 中,刚刚添加到目前为止第一季度),但如果是这样,我真的需要一个 'all' 版本来为地区工作,知道吗?我想我可以在某处添加一组额外的 if 条件来说明 K4 = all 然后忽略其他选项并拉出与其他 2 个条件匹配的所有内容,但老实说我不知道​​从哪里开始。

我觉得我可能应该用过滤器而不是查询来做一些事情,但我从未使用过过滤器!

https://docs.google.com/spreadsheets/d/1YtMLH4YDdqeHEnw2TnKZhZwVZ8DwYJ_CNd8XRe-H7wg/edit#gid=15127497

感谢您的帮助:)

看起来你只是忘记了 O 和 AA 列...尝试:

=IFERROR(
 IF(I4="Quarter 1", QUERY('Testing summary'!A6:BC,"select B,E,F,G,H,I,J,K,L,M,N,O,P where E = '"&$J&"'"),
 IF(I4="Quarter 2", QUERY('Testing summary'!A6:BC,"select B,R,S,T,U,V,W,X,Y,Z,AA,AB,AC where R = '"&$J&"'"),
 IF(I4="Quarter 3", QUERY('Testing summary'!A6:BC,"select B,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP where AE = '"&$J&"'"),
 IF(I4="Quarter 4", QUERY('Testing summary'!A6:BC,"select B,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC where AR = '"&$J&"'"))))), 
 "No results found")

您还可以使用以下方式保存 50 多个字符:

=IFERROR(
 IF(I4="Quarter 1", QUERY({'Testing summary'!B:B, 'Testing summary'!E:P},   "where Col2 = '"&J4&"'", ),
 IF(I4="Quarter 2", QUERY({'Testing summary'!B:B, 'Testing summary'!R:AC},  "where Col2 = '"&J4&"'", ),
 IF(I4="Quarter 3", QUERY({'Testing summary'!B:B, 'Testing summary'!AE:AP}, "where Col2 = '"&J4&"'", ),
 IF(I4="Quarter 4", QUERY({'Testing summary'!B:B, 'Testing summary'!AR:BC}, "where Col2 = '"&J4&"'", ))))), 
 "No results found")

如果重命名 sheet:

,最多可保存 170 多个字符


关于你的第二个问题尝试:

=IFERROR(ARRAY_CONSTRAIN(
 IF(I4="Quarter 1", QUERY({T!B:B, T!E:P, T!A:A},   "where Col2='"&J4&IF(K4="All",,"' and Col14='"&K4)&"'", ),
 IF(I4="Quarter 2", QUERY({T!B:B, T!R:AD, T!A:A},  "where Col2='"&J4&IF(K4="All",,"' and Col14='"&K4)&"'", ),
 IF(I4="Quarter 3", QUERY({T!B:B, T!AE:AP, T!A:A}, "where Col2='"&J4&IF(K4="All",,"' and Col14='"&K4)&"'", ),
 IF(I4="Quarter 4", QUERY({T!B:B, T!AR:BC, T!A:A}, "where Col2='"&J4&IF(K4="All",,"' and Col14='"&K4)&"'", ))))), 
 9^9, 13), "No results found")

demo spreadsheet