0

我有一个在谷歌表(here's a copy)行为不当的查询。我使用这张表作为用户反馈(通过表单)的后端,并为专有应用程序形成一个bug跟踪器/功能请求表。查询谷歌应用程序脚本 - Arrayformula错误

有问题的查询是主选项卡上,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 bug报告的项目,则制表大师给出了这样的错误在G列的违规单元:“阵列参数IF是大小不同“

我需要的是公式查看Master的D列中的类别,然后从与该行匹配的”formResponses“中提取报表和其他详细信息数据。我知道错误告诉我到底什么是错误的,但我找不到解决方法。我这次做了什么?

回答

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)将将重复的数据拉入两个单元格。我已经解决了这个问题,只需让它为第二个选择器提供一个空列即可。

如果有人有更好的方法,我会很高兴听到他们:)