Google sheets 有没有办法在谷歌表单上创建动态查询?

Google sheets 有没有办法在谷歌表单上创建动态查询?,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我正在Google Sheets上为工作创建一个数据库,虽然我知道这不是最好的解决方案,但由于一些限制,这正是我必须使用atm的原因 问题是,我为那些不知道如何在谷歌表单上使用公式的人创建了这个,所以我尽量做到用户友好 我将使用此示例表尝试并演示我正在尝试做的事情: 其中一张是数据库,它将统计多个数据列(示例中有10个,但实际的数据库要大得多) 还有一个叫做列索引的表,我有一个所有列的列表,它们代表什么样的数据,还有一个复选框,供人们选择他们想要的数据 最后,还有第三张工作表,名为数据提取,我

我正在Google Sheets上为工作创建一个数据库,虽然我知道这不是最好的解决方案,但由于一些限制,这正是我必须使用atm的原因

问题是,我为那些不知道如何在谷歌表单上使用公式的人创建了这个,所以我尽量做到用户友好

我将使用此示例表尝试并演示我正在尝试做的事情:

其中一张是数据库,它将统计多个数据列(示例中有10个,但实际的数据库要大得多)

还有一个叫做列索引的表,我有一个所有列的列表,它们代表什么样的数据,还有一个复选框,供人们选择他们想要的数据

最后,还有第三张工作表,名为数据提取,我想从数据库中获取选中的列,并将它们发送到此工作表,以便人们可以下载这些数据或将其复制到其他工作表

在我看来,这似乎是一种查询情况,但我不确定是否可以动态执行它

这应该可以:

=ArrayFormula(QUERY(
    Database!A:K, 
    "select A,"&
    TEXTJOIN(
        ",",
        1,
        IFNA(
            REGEXEXTRACT(
                ADDRESS(
                    1,
                    MATCH(
                        IF(
                            'Column Index'!C2:C,
                            'Column Index'!B2:B,
                            ""
                        ),
                        Database!1:1,
                        0
                    )
                ),
                "[A-Z]+"
            )
        )
    )
))
我构建了查询字符串,选择了我们想要的列索引。不需要“Col Index”列

使用Address,我们可以使用列地址生成适当的列字母,然后我们只需使用正则表达式提取字母部分。

这应该可以做到:

=ArrayFormula(QUERY(
    Database!A:K, 
    "select A,"&
    TEXTJOIN(
        ",",
        1,
        IFNA(
            REGEXEXTRACT(
                ADDRESS(
                    1,
                    MATCH(
                        IF(
                            'Column Index'!C2:C,
                            'Column Index'!B2:B,
                            ""
                        ),
                        Database!1:1,
                        0
                    )
                ),
                "[A-Z]+"
            )
        )
    )
))
我构建了查询字符串,选择了我们想要的列索引。不需要“Col Index”列


使用Address,我们可以使用列地址生成适当的列字母,然后我们只需使用正则表达式提取字母部分。

我得到的结果没有什么不同,因为我还试图构造查询字符串。缺点是它可能有点问题(但它可以工作)

这是:


=query(Database!A1:K15,“select A,”&join(“,”),ArrayFormula(替换(地址(1,过滤器(行('Column Index'!C2:C11),'Column Index'!C2:C11),4),“1”,”))
我得到的结果与我试图构造查询字符串时没有太大的不同。缺点是它可能有点问题(但它可以工作)

这是:


=query(Database!A1:K15,“select A,”&join(“,”),ArrayFormula(替换(地址(1,过滤器(行('Column Index'!C2:C11),'Column Index'!C2:C11),4),“1”,”))

您所说的“动态”是什么意思您的意思是您的用户将使用其他工作表从该工作表导入数据?我的意思是,我不确定如何以用户只需选中复选框的方式对其进行结构设置,并且他们选择的数据将显示在“数据提取”工作表上您所说的“动态”是什么意思您的意思是您的用户将使用其他工作表从此工作表中导入数据?我的意思是,我不确定如何以用户只需选中复选框的方式对其进行结构设置,并且他们选择的数据将显示在“数据提取”工作表上。非常感谢!它似乎工作得很好!非常感谢你!它似乎工作得很好!