当前位置: 首页 > 知识库问答 >
问题:

Google Sheets过滤器带有IN子句

夏振国
2023-03-14

问:在GoogleSheets中,仅使用内置函数,如何编写一个过滤器,根据每行中的一列不在另一个范围的有效值列表中排除记录。

详细资料

我正在使用Google Sheets编写一个财务电子表格,其中我所有的支出和收入都输入到一个名为“交易”的表格中。我有一个单独的表叫做常量,在这里我有一个收入类别列表和一个费用类别列表。

以下是一些用于问题的示例数据:

常数

交易

我有一张名为ByMonth的表格,其中我想在一个部分中显示所有费用交易,在单独的部分中显示所有收入交易。目标:

我需要在google sheets函数中执行此sql查询:

select date, category, amount from transactions 
where category not in (
    select * from expense_categories
)

但我不知道如何让谷歌表单让我对它们的功能进行概念上的分析。

下面是一个单元格函数html" target="_blank">表达式,我使用它根据日期字段筛选行:

=filter(Transactions!A2:C, 
        DATEVALUE(Transactions!A2:A) >= date(2015,4,1), 
        DATEVALUE(Transactions!A2:A) <= date(2015,4,30)
)

我将向filter()函数添加第三个条件,第三个条件将以某种方式将每行数据的Category列与有效的费用或收入类别列表进行比较,并返回一个布尔值。

以下是我尝试过的一些其他方法,但没有成功,包括MATCH、ARRAYFORMULA等的一些变体:

=filter(Transactions!A2:C, row(Transactions!B2:B) = UNIQUE(Constants!A2:A))
=filter(Transactions!A2:C, Transactions!B2:B = UNIQUE(Constants!A2:A))
=filter(Transactions!A2:C, Transactions!B2:B = Constants!A2:A)

有什么建议吗?

共有2个答案

邢良才
2023-03-14

由于每个类别使用关键字,费用收入,以下公式返回所需的结果

=query(Journal!A2:C13,"Select * where B contains 'expense'")
=query(Journal!A2:C13,"Select * where B contains 'income'")
顾嘉良
2023-03-14

您感兴趣的公式是:

=filter(Journal!A2:C13,IFERROR(Match(Journal!B2:B13,Categories!A2:A3,0)))

函数match(a,b,0)搜索a是否可以在b中找到。您需要在结尾处使用0进行精确匹配(默认为最接近匹配)。如果找不到a,则会出现错误,因此使用iferror包装函数以跳过错误。

下面是一个工作示例文件

 类似资料:
  • 问题内容: 我正在尝试建立一个查询,该查询将找到所有用户文档(docType =用户),然后根据许多过滤器对其进行过滤。例如位置,性别,年龄等。过滤器是根据我正在构建的搜索功能上的用户输入来添加/删除的。 以下没有结果: 以下返回结果: 后者虽然返回结果,但从长远来看是行不通的,因为我可能想为年龄,性别等添加一个额外的过滤器,而且我似乎无法添加多个字段。如果我删除位置过滤器,则第一个查询有效。 问

  • 例如,我想做这样的事情: 新建Select().from(Table).where(“id in?”,list).execute()

  • 记录具有id和名称 带有@Convert的DocumentModel 记录转换器 如果recordIds有多个值(例如:docId=1),即使: 嵌套选择不工作 IN子句有和没有()不工作 子句的成员不工作 导致本机SQL直接无法工作 @公式不工作 而且问题似乎是记录应该是单引号-逗号分隔的,而不仅仅是逗号分隔的,因为它们是字符串。(本机SQL查询在这种情况下工作)

  • 问题内容: 我想用类似SQL的子句过滤Pyspark DataFrame ,如 元组在哪儿?我收到此错误: java.lang.RuntimeException:[1.67]错误:预期“(”,但找到了标识符 这基本上是说它期待的是 ‘(1,2,3)’ 而不是a。问题是由于从另一个作业中提取了值,因此我无法手动将其写入。 在这种情况下,我该如何过滤? 问题答案: 您传递给它的字符串是在SQL环境范围

  • 如果我使用而不是,链接是否会改变结果? 我尝试了几千条记录,结果在几次迭代中都是一致的。但由于这涉及到线程(我找不到足够的相关材料来讨论这种组合),我想双重确保并行流不会以任何方式影响过滤器链接的输出。示例代码: