【问题标题】:Is there a way to create a dynamic Query on Google Sheets?有没有办法在 Google 表格上创建动态查询?
【发布时间】:2020-10-07 18:06:04
【问题描述】:

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

问题是,我正在为那些真正不知道如何使用 Google 表格上的公式的人创建这个,所以我尽量做到用户友好。

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

https://docs.google.com/spreadsheets/d/1tXM0IlswQVdwFum9a0pR5NsbtL5Uq_AH1tPbytXGvVg/edit#gid=0

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

还有一个名为 Column Index 的工作表,其中列出了所有列、它们代表的数据类型以及供人们选择所需数据的复选框。

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

对我来说,这看起来像是一个 QUERY 情况,但我不确定是否可以动态执行此操作

【问题讨论】:

  • 我的意思是我不知道如何以一种所有用户必须做的方式来构建它,只需选中这些框,他们选择的数据就会出现在“数据提取”表上

标签: google-sheets google-sheets-formula


【解决方案1】:

应该这样做:

=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”列。

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

【讨论】:

    【解决方案2】:

    我得到的并没有什么不同,因为我也尝试构建查询字符串。缺点是它可能有点错误(但它有效)

    这里是:

    =query(Database!A1:K15,"select A,"&join(",",ArrayFormula(SUBSTITUTE(ADDRESS(1,filter(row('Column Index'!C2:C11),'Column Index'!C2:C11),4), "1", ""))))

    【讨论】:

      猜你喜欢
      • 2022-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2019-11-06
      • 2023-01-20
      • 2017-12-15
      • 2023-01-12
      • 1970-01-01
      相关资源
      最近更新 更多