我在google工作表(here's a copy)中有一个行为不端的查询。我正在使用此工作表作为用户反馈的后端(通过表单),并为其创建一个错误跟踪器/功能请求表,用于专有应用程序。
有问题的查询位于主标签上,G列:
=ARRAYFORMULA(
IF(FormResponses!D2:D = "Bug report",
QUERY(FormResponses!A2:O, "SELECT E,F WHERE D ='Bug report'",0),
IF(FormResponses!D2:D = "Suggestion for Improvement",
QUERY(FormResponses!A2:O, "SELECT G,H WHERE D ='Suggestion for Improvement'",0),
IF(FormResponses!D2:D = "Feature Request",
QUERY(FormResponses!A2:O, "SELECT I WHERE D ='Feature Request'",0),
IF(FormResponses!D2:D = "Other",
QUERY(FormResponses!A2:O, "SELECT J WHERE D ='Other'",0), "")
))))
它有效,直到第二个项目与已存在的类别相同。
示例:有人提交了“错误报告”,在formResponses中已经有一个项目被归类为错误报告,“主要”标签在G列的违规单元格中显示此错误: “IF的数组参数大小不同”
我需要的是公式查看Master D列中的类别,然后从“formResponses”中提取与该行匹配的报告和其他详细信息数据。我知道错误告诉我确切的错误:)但我找不到解决方法。这次我做了什么?
答案 0 :(得分:0)
我最后通过使用此代码解决了我的问题:
=ARRAYFORMULA(
IF(FormResponses!D:D = "Bug report",
QUERY(FormResponses!A:O, "SELECT E,F",0),
IF(FormResponses!D:D = "Suggestion for Improvement",
QUERY(FormResponses!A:O, "SELECT G,H",0),
IF(FormResponses!D:D = "Feature Request",
QUERY(FormResponses!A:O, "SELECT I,K",0),
IF(FormResponses!D:D = "Other",
QUERY(FormResponses!A:O, "SELECT J,K",0),"")
))))
最好的我可以告诉我,我使用A2:O的范围太具体了,并且通过使用IF(语句和WHERE语句来查找特定字符串)来加倍我的参数。
这里仍然存在一个小问题,其中任何选择单个列的查询(两个底部IF')都会将重复数据拉入两个单元格。我通过为第二个选择器拉出一个空列来解决这个问题。
如果有人有更好的方法,我很高兴听到他们:)