361 数据洞察: PMC中的单条件与多条件筛选技巧与案例剖析

职场计划有古哥2024-04-15 19:32:10  97

在PMC的工作环境中,数据分析是一项频繁进行的任务。为了在不影响原始表格数据的前提下,一个常用的方法是在新表格中利用筛选函数进行单条件或多条件的数据筛选。针对各异的数据集,所需筛选的条件亦存在差异。有的情形仅涉及一至两个筛选条件,而在一些复杂度较高的场景中,筛选条件的数量可能远超五个,呈现出多维度、多层次的特点。

今日,古老师将以具体案例剖析,在面对各类筛选条件时,如何选取最为适宜的方法以实现最优数据筛选。特别是对于多条件筛选场景,他将重点解读一种效率极高的筛选思路。

单条件筛选

单条件筛选是FILTER函数的基础应用之一。借助该函数及其参数设定,可迅速筛选出满足特定条件的数据子集。以下为此函数的具体应用示例:

=FILTER(B5:E16,C5:C16=G2)

解释如下:

数组:指明待筛选并最终显示的范围,此处为B5:E16,涵盖“日期”、“订单”、“产品”及“数量”四列数据。

包括:定义筛选依据的判断条件。在本例中,条件区域为C5:C16(即“订单”列),判断逻辑为“=G2”。这意味着仅保留订单列中与G2单元格内容(即“PO-1”)相等的行。

执行上述函数后,得到的筛选结果如附图所示。

多条件筛选

单条件筛选与多条件筛选在使用FILTER函数时的主要差异体现在第二个参数,即“包括”部分。进行多条件筛选时,各筛选条件间采用特定格式连接,具体如下:

或多条件:

=FILTER(数组,(条件1区域=条件1) + (条件2区域=条件2) * ……)

此处,各筛选条件以“条件区域=条件值”的形式表示,并通过符号“+”(逻辑加)连接。这意味着只要满足其中任何一个条件,相关数据行即会被筛选出来。

=FILTER(B5:E16,(C5:C16=G2)+(C5:C16=H2))

此公式旨在筛选出B5:E16范围内,满足以下条件的数据行:

C列订单列中订单等于G2(PO-1) 或者订单等于H2(PO-1)

通过在“包括”部分使用逻辑加(“+”)连接两个单条件筛选表达式 (C5:C16=G2) 和 (C5:C16=H2),实现对订单列中订单为“PO-1”(由G2单元格提供)或“PO-1”(由H2单元格提供)的数据行进行筛选。

效果如下图所示:

并多条件:

=FILTER(数组,(条件1区域=条件1) * (条件2区域=条件2) * ……)

各筛选条件同样以“条件区域=条件值”的形式表述,但各条件间采用符号“*”(逻辑乘)连接。在这种情况下,只有当所有条件均得到满足时,对应数据行才会被筛选出来。

=FILTER(B5:E16,(C5:C16=G2)*(E5:E16

此公式旨在筛选出B5:E16范围内,满足以下条件的数据行:

C列订单列中订单等于G2(PO-3) 并且E列数量列小于H2(50)的数量

通过在“包括”部分使用逻辑乘(“*”)连接两个单条件筛选表达式 (C5:C16=G2) 和 (E5:E16

效果如下图所示:

说明如下:

数组:同前,指定待筛选的数据范围。

包括:在多条件筛选中,根据实际需求选用上述两种逻辑组合方式之一,构建相应的条件表达式。第一种表达式适用于“或关系”筛选(满足任一条件即可),第二种表达式适用于“与关系”筛选(需同时满足所有条件)。

超多条件筛选

当筛选条件数目超过五个时,继续沿用上述FILTER函数的条件表达式格式,即:

=FILTER(数组,(条件1区域=条件1) * (条件2区域=条件2) * ……);

无论采用“或”逻辑还是“并”逻辑,都会导致“包括”部分的条件列表变得极为冗长,不利于阅读与维护。因此,在处理超多条件筛选问题时,有必要调整“包括”条件的编写方式,以实现更简洁、高效的筛选表达。

以下为对5个条件进行“或”筛选的过程,目标是筛选出订单列中订单为“PO-7”、“PO-2”、“PO-3”、“PO-4”或“PO-5”的结果。为便于理解,我们将分步展示运算步骤:

构建对比矩阵:

订单列:取自C2:C16,确保在垂直维度上排列。

条件列:取自C2:G2,确保在水平维度上列出所有待筛选订单(“PO-7”、“PO-2”、“PO-3”、“PO-4”、“PO-5”)。

对比公式:=C5:C16=C2:G2,此公式将订单列与条件列进行逐元素比较,生成一个二维逻辑数组,其中元素值为TRUE或FALSE,表示对应订单是否符合指定条件。TRUE代表满足;

在得到上述逻辑值数组之后,确实不能直接用于某些数学或统计运算。为实现逻辑值到数值的转换,可以使用WPS中的N函数:

=N(C5:C16=C2:G2)

此函数将把先前得到的逻辑值数组(TRUE/FALSE)转化为对应的数字值(1/0)。具体来说,对于逻辑数组中的每个元素,若为TRUE,则转换为1;若为FALSE,则转换为0。这样,我们就得到了一个同样大小的数值数组,效果如下图所示:

在使用筛选函数时,确实无法直接将一个二维逻辑数组作为“包括”参数。为解决这一问题,可以将二维数组转换为一维数组,以便于后续与FILTER函数配合使用。这里推荐使用WPS中的BYROW函数结合LAMBDA匿名函数实现数组求和:

=BYROW(N(C5:C16=C2:G2),LAMBDA(X,SUM(X)))

或者直接简写:

=BYROW(N(C5:C16=C2:G2),SUM)

效果如下:

至此,我们已成功将二维逻辑数组转换为一维数组,便于后续与FILTER函数配合,进行订单筛选。接下来,只需将该一维数组作为FILTER函数的“包括”参数。

录入以下函数:

=FILTER(B5:E16,BYROW(N(C5:C16=C2:G2),SUM))

即可得到一个基于“或”逻辑的五条件筛选结果。该函数将筛选出B5:E16范围内,订单列(C列)中订单至少符合“PO-7”、“PO-2”、“PO-3”、“PO-4”或“PO-5”中任意一个条件的行。

思路总结:

N(C5:C16=C2:G2):将订单列与条件列进行逐元素比较,生成一个二维逻辑数组,并通过N函数将其转化为数值形式(1代表TRUE,0代表FALSE)。

BYROW(N(C5:C16=C2:G2), LAMBDA(X, SUM(X))):对上述二维数组逐行求和,生成一个一维数组。数组中的每个元素值表示对应订单行是否至少符合一个筛选条件(非零值表示至少符合一个条件,0表示不符合任何条件)。

FILTER(B5:E16, BYROW(N(C5:C16=C2:G2), LAMBDA(X, SUM(X)))):利用FILTER函数筛选B5:E16范围内,订单列中订单符合一维数组中非零元素所对应条件的行,即至少符合一个筛选条件的订单数据。

效果如下图所示:

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/231335.html
0
最新回复(0)