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

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

在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
随机主题
#墨西哥一场总统竞选活动舞台倒塌,已致5人死亡,约50人受伤 #事故 #意外比亚迪扎起纯电动车藩篱任晓: 中美形成正确相互认知, 兹事体大多功能跨界自动挡弯梁ADV——力腾190, 正式命名为军刀并开始盲定降价就会冲的小米手机, 很多人直接选了这两款, 小米13Ultra在内了解交法我有责 安全交通为大家中场进攻 底线分点能力都有提升继续加油电脑硅脂的保质期能有多久?《乘风2024》宣布将直播, 被质疑投票数据注水, 节目组回应: 将对异常数据予以清除处理美共和党籍议员急喊制裁ICC: 今天是以色列, 下一个就会是我们!大众确认: 全新SUV四季度首发! 外观酷似路虎揽胜, 满意吗?东部战区围岛军演! 剑指“台独”Sensor Tower: 4月全球热门移动游戏收入TOP10出炉 Scopely《Monopoly GO! 》蝉联冠军原来华为手机还藏了3个功能,这都不知手机白买,学到就是赚到 #生活小技巧布林肯喊话伊朗“莱希遇难会让你们日子更好”, 遭到伊民众愤怒反击同样面对权臣, 孙亮谨小慎微, 曹髦英勇无畏, 谁更值得称道?一口价6.99万起,标配1.5T+双大屏+独悬,探店2024款瑞虎7“曼城太子爷——福登”炸裂! 中国出售了创纪录金额的美国国债, 打蛇打到了七寸!《艾尔登法环 黄金树幽影》宣传视频来了, 交界地世界观拓展了!宝马Skytop概念车视频泄露, 看上去是近年来最漂亮的宝马
最新回复(0)