WPS Office 官网 LogoWPS Office
数据筛选

WPS表格如何按条件筛选数据并只显示符合结果?

WPS 官方团队

WPS表格条件筛选, 只显示符合条件的数据, 按条件筛选数据, WPS表格自动筛选怎么设置, WPS表格高级筛选如何使用, 筛选后数据不全怎么排查, 多条件筛选规则设置, WPS表格筛选功能使用教程

从「筛完还是全表」说起

很多人第一次在 WPS 表格里尝试按条件筛选数据并只显示符合结果,得到的却是一张「看起来没变化」的表:表头多了几个小箭头,行数一条没少,往下翻还是几百行原始记录。问题通常不在操作水平,而在于选中的区域不对、条件写在了错误的位置,或者你其实想要的效果应该由「高级筛选」而不是「自动筛选」来完成。

这篇内容按「功能拆解 → 场景映射 → 最佳实践 → 不适用清单」的顺序展开。前半部分讲清楚自动筛选与高级筛选各自能表达什么样的条件组合,中间给出桌面端与移动端的最短路径和失败回退,后半部分集中处理筛选之后的统计、复制、删除这几个真正容易出事的环节。每一节都可以单独查阅,但按顺序读下来,排查思路会更完整。

需要先说明一个前提:WPS 表格的筛选逻辑与主流电子表格软件保持兼容,函数、通配符、条件区域的写法基本一致。但界面位置、按钮名称在不同版本和不同平台上会有差异,下文给出的路径以截至当前的最新版本为例,实际操作时请以你安装版本的界面为准。

从「筛完还是全表」说起
从「筛完还是全表」说起

第一步:确认你遇到的是哪一类「筛不出来」

在动手改设置之前,先花十秒判断自己属于哪种情况,能省掉大量试错。常见的有三种:箭头出现了但点击后没有任何反应;条件设了,行数没变;行数变了,但显示的结果明显不对。

箭头出现了但没反应,多数是数据区域里存在整行空白,或者表头单元格与数据单元格的格式被合并单元格打断。筛选下拉的候选项是从当前列连续区域里读取的,一旦中间断开,它会把断点之后的内容当作另一块区域处理。条件设了行数没变,往往是因为条件作用在了错误的列上——比如你想筛「金额大于 10000」,却在「订单号」这一列打开了数字筛选。结果明显不对,最典型的原因是这一列的数字被存成了文本,于是「大于 10000」的文本比较会按字符逐位进行,出现 9000 排在 10000 前面的情况。

快速验证:在空白单元格输入 =ISNUMBER(被怀疑的单元格),返回 FALSE 说明它是文本型数字。文本型数字通常来自从其他系统导出的数据,左上角会有一个绿色小三角提示。

筛选、隐藏、条件格式:三个容易混淆的功能

这三者在视觉上都表现为「有些内容看不见了」或「有些内容被标出来了」,但代价和后续影响完全不同,选错会带来返工。可以先记住一句话:筛选改的是可见性,条件格式改的是外观,排序改的是顺序;三者可以叠加,但每叠加一层,事后追溯「我刚才动了什么」就更难。

自动筛选的本质是把行藏起来

筛选不会删除任何数据,被筛掉的行只是处于隐藏状态。这意味着文件体积不变、其他人打开时看到的仍是完整数据、取消筛选后一切原样恢复。这个特性决定了它适合「临时查看」,而不适合「交付一份只含部分记录的表」。如果你需要把结果发给同事,正确做法是筛选后复制到新工作表,而不是直接发原文件让对方自己筛。换个角度说,筛选状态是一种本地视图,不是一个可以交付的产物。

条件格式只改外观,不减少行数

条件格式(开始选项卡下的「条件格式」)能把符合条件的单元格标红、加底色,但所有行依然完整显示。它适合的场景是「我需要同时看到达标和不达标的记录并做对比」,比如核对一份对账单时,把差异行标出来比把它们藏起来更有用。反之,如果你要做的是「只看异常项」,用条件格式会让人不断往下滚动,效率很低。理解这一点,也能避免「已经标了颜色,却以为已经筛过了」的误会。

排序不是筛选

排序改变的是行的顺序,不改变显示数量。有些用户把「按金额降序」误当成筛选,结果只是把最大的几笔挪到了最上面,总行数依旧是全部。排序与筛选可以叠加使用,顺序上一般先筛后排,因为对已经缩小范围的结果排序,视觉噪音更少;反过来先排全表再筛,反而更难判断顺序是否符合预期。

自动筛选的桌面端最短路径

自动筛选是使用频率最高的入口,适合「单列条件」或「多列之间取交集」的场景。它的优点是即点即用,缺点是同一列只能表达一种条件组合,跨列则只能是「并且」的关系。把这个边界记清楚,后面才知道什么时候该让高级筛选上场。

Windows 端

先选中数据区域内的任意一个单元格,然后切换到「数据」选项卡 → 「筛选」。此时每列标题右侧会出现下拉箭头。点击箭头即可展开筛选面板,面板上半部分是值列表(可勾选具体内容),下半部分是「文本筛选」「数字筛选」等条件入口,具体显示哪一类取决于该列的数据类型。想取消时,再次点击「筛选」按钮即可整体关闭;只想取消某一列的条件,点击该列箭头选择清除条件。

macOS 端

路径与 Windows 基本一致,同样在顶部菜单的「数据」分组下找到筛选功能,表头出现下拉箭头后操作方式相同。差异主要在右键菜单的层级和一些快捷键上,如果找不到按钮,可以先选中数据区域再查看菜单栏,多数情况下筛选入口会处于可用状态。

选错区域怎么回退

最常见的失败是只选中了表头一行就点了筛选,或者手动拖选时漏掉了右侧几列。表现是箭头只出现在部分列上,右侧的数据无法参与条件组合。回退方法很直接:先关闭筛选,点击数据区域内任意单元格,重新开启,让程序自动识别连续的数据块。

如果表格中间存在整行空白,自动识别会在空白处中断。此时要么把空白行删掉,要么手动框选完整区域后再开启筛选。合并单元格同样会打断识别,建议在筛选前先取消用于表头的合并。

移动端怎么按条件筛选

手机和平板上的表格应用把功能收进了「工具」面板,空间限制导致条件面板的层级更深,但核心逻辑一致,所以下面这条路线更适合当作方向参考。经验性的路径是:打开表格文件 → 点击底部或右下角的「工具」→ 在「数据」分类中找到筛选相关入口 → 选中目标列 → 设置条件。由于移动端各版本的面板组织调整较频繁,如果按上述文字找不到,可以在工具面板里直接搜索「筛选」。

移动端的取舍建议是:只做「看一眼结果」这类轻量操作。涉及多列条件组合、自定义条件区域、复制到其他位置这类复杂设置时,仍然建议回到桌面端完成,手机上不仅路径更深,误触导致的区域选择错误也更难排查。一个常见的坏体验是:在手机上筛选后直接编辑某个单元格,保存退出,后来在电脑上打开发现改动落在了被隐藏的行上。

单字段多条件:用「自定义筛选」一次写完

「金额大于 5000 且小于 20000」这类同一列上的区间条件,不需要筛两次。点击列标题箭头后选择「数字筛选」→「自定义筛选」,会弹出一个可以填写两个条件的对话框,两个条件之间用「与」「或」连接。文本列同理,入口是「文本筛选」→「自定义筛选」。

常见的条件选项包括:等于、不等于、大于、大于或等于、小于、小于或等于、介于、开头是、结尾是、包含、不包含。这些选项在不同版本里的中文措辞可能略有出入,但覆盖的能力范围是一致的。真正需要留意的是文本列上的比较——「开头是」「包含」是按字符串匹配,「大于」在文本列上则按字符顺序比较,很容易得到反直觉的结果。

通配符能省掉很多重复筛选

在文本条件里,星号 * 代表任意多个字符,问号 ? 代表单个字符。比如要筛出所有以「华东」开头的客户名称,条件写成「开头是 华东」即可;如果要筛出「包含『直营』二字但不是以『直营』开头」的记录,可以用「包含 *直营*」配合其他条件组合。若单元格内容本身就含有星号或问号,需要在前面加波浪号转义,否则会被当作通配符处理。

举个具体例子:一份客户名单里同时存在「北京朝阳直营店」和「直营-北京海淀」两种命名。用「开头是 直营」只能筛到后者,用「包含 直营」才能两者都覆盖。这类命名不统一的表,在筛选之前花几分钟做一次数据清洗,往往比反复调条件更省时间。

跨字段组合:同列可「或」,跨列只能是「且」

这是自动筛选最容易被误解的地方。当你在「地区」列选了「华东」,再去「销售员」列选一个名字,两列条件之间是「并且」的关系,也就是只显示同时满足两者的行。自动筛选没有提供在界面上直接把两个不同列的条件改成「或者」的开关。

设想一张季度销售明细,字段为地区、销售员、金额、日期。你要找「华东地区金额大于 10000 的订单」,两个条件落在不同列上,用自动筛选分别设置即可,结果自然取交集。但如果需求变成「华东地区,或者金额大于 10000」,跨列取并集,自动筛选就无法直接表达,必须改用高级筛选。

区分方法很简单:把需求翻译成一句话,如果中间只能用「并且」连接,自动筛选够用;一旦出现「或者」且两个条件分属不同列,就该换工具了。同一个「自定义筛选」对话框里写下的「或」,仍然属于同一列内部的取值判断,不能跨列生效。

高级筛选:条件区域的四条硬规则

高级筛选的核心不是按钮,而是「条件区域」怎么搭。条件区域是你在工作表空白处手动写出的一小块区域,第一行是列标题,下面若干行是条件值。它的表达能力强于自动筛选,代价是必须自己维护这块区域,写错一行结果就完全不同。下面四条规则,决定了这块区域能不能被正确识别。

规则一:标题必须与源表完全一致

条件区域第一行的文字,要和源表的列标题逐字相同,不能多一个空格、不能简写。源表写「销售金额」,条件区域写成「金额」就会失效。稳妥的做法是直接从源表复制标题粘贴过来,避免手打出错。

规则一:标题必须与源表完全一致
规则一:标题必须与源表完全一致

规则二:同一行是「且」,不同行是「或」

把条件写在同一行,表示这些条件要同时满足;分写在多行,表示任意一行满足即可。这是高级筛选区别于自动筛选的关键能力,跨列取并集就靠它实现。

规则三:条件区域与数据区之间留出空行

如果条件区域紧贴着数据区下方,程序在识别数据范围时可能把它一并算进去,导致筛选结果里混入条件行本身。在两者之间保留至少一行空白,是最省事的规避方式。

规则四:不要把条件区域框进数据区域

开启高级筛选时,需要分别指定「列表区域」和「条件区域」。前者只框数据本身(含表头),后者只框手写的那一小块。一旦把两者混在同一个框选里,结果通常会变成空表或全表。

条件区域的具体写法对照

下面用一张销售明细说明写法差异。设源表包含「地区」「销售员」「金额」三列,条件区域放在数据下方的空白处。

想表达的意思 条件区域写法 结果范围
华东 且 金额大于 10000 同一行写:地区=华东,金额=>10000 同时满足两者
华东 或 金额大于 10000 第一行写地区=华东,第二行写金额=>10000 满足任意一条
金额介于 5000 到 20000 同一行写:金额=>5000,金额=<20000 区间内记录

注意第三行的写法:同一个列标题在条件区域里出现了两次。这是高级筛选中表达区间条件的常规做法,不是笔误。条件是数值时直接写数字,是文本时直接写文字,需要精确匹配时可以用公式形式,此时条件区域的标题要留空,公式需返回逻辑值。

公式型条件适合规则较复杂的场景,例如「筛选出金额高于本列平均值的记录」。这类写法门槛较高,一旦公式里引用的单元格地址写错,结果会静默为空,排查成本不低。若只是偶尔用一次,用辅助列先算出判断结果、再按 TRUE/FALSE 筛选,往往更快,也更容易解释给同事听。

完整操作路径与「复制到其他位置」

桌面端的路径是:「数据」选项卡 → 「筛选」按钮旁的下拉箭头 → 「高级筛选」,部分版本会把高级筛选直接列为独立按钮,以实际界面为准。打开对话框后,依次确认三件事:列表区域是否正确覆盖了全部数据(含表头)、条件区域是否只包含手写的那一块、以及是否勾选了「将筛选结果复制到其他位置」。

「复制到其他位置」这个选项的价值在于产出一份静态结果。勾选后指定一个空白区域的左上角单元格,程序会把符合条件的行复制过去,原表保持不变。相比「筛选后手动复制粘贴」,它不会把隐藏行一起带过去,是交付给他人的正确方式。若同时勾选「选择不重复的记录」,还能顺带完成去重。

目标位置必须留足空白。如果复制区域的右下角压到了已有数据,会被直接覆盖且没有二次确认。执行前先确认目标区域至少留出与结果行数相当的空行。

筛选之后:为什么合计数字没变

这是使用筛选后最高频的困惑。你在金额列下方用求和公式算出的总数,在筛选前后完全一样。原因很朴素:常规的求和函数统计的是区域内所有单元格,包括被筛选隐藏的行,隐藏并不等于不存在。

用 SUBTOTAL 代替直接求和

与主流电子表格兼容的 SUBTOTAL 函数专门处理这类需求,它会跳过被筛选掉的行。写法是 =SUBTOTAL(9, 数据区域),其中 9 表示求和。把它放在数据区域下方,筛选时数字会随结果同步变化,取消筛选后恢复为全量合计。

函数编号 9 与 109 的差别

第二个参数用 9 时,只忽略被筛选隐藏的行;用 109 时,手动右键隐藏的行也会一并忽略。判断标准是这些行是「筛掉的」还是「你自己藏起来的」:如果表里同时存在两种情况,又想统计真正的可见部分,用 109 更贴合直觉。需要注意的是,无论 9 还是 109,都不会跳过手动调整行高为 0 的行,这一点在整理过的表里容易造成偏差。

筛选状态下的复制、删除与粘贴风险

筛选后直接框选区域按 Ctrl+C,复制的仍然包含隐藏行,粘到别处就变成全量数据。正确的做法是先选中可见区域再做复制定位,或者干脆使用前文提到的高级筛选「复制到其他位置」。这个差异在做月度报表时尤其致命——你以为交出去的是 30 条异常记录,对方收到的却是 800 条全量。

删除的风险更大。在筛选状态下选中整行右键删除,删掉的是可见行,隐藏行会被保留;但如果先复制再粘贴到别的位置,或者使用了会作用于整片区域的批量操作,隐藏行就可能被一并修改。经验性观察是:在筛选状态下做任何写入操作前,先取消筛选确认总行数,再重新筛选,这个动作能挡掉绝大多数误删。

还有一个容易忽略的点是公式引用。筛选只影响显示,被隐藏行里的公式照常计算,也照常被其他单元格引用。如果某行的计算结果为错误值,过滤条件又恰好把它藏了起来,这个错误会沿着引用链传播,却在界面上看不见。排查时用「查找」定位错误值,比肉眼翻找更可靠。

让筛选条件可以复用的三种做法

如果一份表每周都要按同样的条件筛一次,每次都重新点一遍显然不划算。下面三种做法分别对应「把条件独立出来」「把判断写进表里」和「换一个呈现工具」,第一种做法是把条件区域单独放在一张工作表里,高级筛选时直接引用那块区域,条件改了结果就跟着变,本质上把筛选变成了可配置的查询。

第二种做法是用辅助列把判断逻辑固化成公式,返回 TRUE 或 FALSE,之后只需对这一列做一次筛选。好处是规则透明、别人接手也能看懂,坏处是辅助列会挤占表结构,导出给外部时容易多出一列无用数据。

第三种做法是把筛选结果接入数据透视表。透视表的筛选字段本身就支持多值勾选,且与源数据分离,适合做「同一份数据、多个不同视角」的呈现。三种方式没有绝对优劣,判断标准是:条件是否稳定、使用频率多高、以及结果是给自己看还是给别人看。

故障排查:按现象找原因

下面这张对照表按「现象 → 可能原因 → 验证 → 处置」组织,覆盖了日常反馈里出现频率较高的几类问题。所列原因均为经验性归纳,具体到你手上的文件仍需按验证步骤确认。

现象 可能原因 验证方式 处置
列标题没有下拉箭头 筛选未开启,或所选区域不含表头 查看「数据」选项卡下筛选按钮是否高亮 选中数据区任意单元格后重新开启
筛完行数几乎没变 条件作用在了错误的列;或数据为文本型 用 ISNUMBER 检查数据类型 转换数据类型后重设条件
结果为空表 条件区域标题与源表不一致;条件互相矛盾 逐字比对标题;临时删掉一半条件重试 复制源表标题覆盖条件区标题
结果里混入了条件行 条件区域紧贴数据区,被一并纳入列表区域 检查列表区域的引用范围末行 中间插入空行,重新框选列表区域
合计数字不随筛选变化 使用了普通求和函数 查看公式是 SUM 还是 SUBTOTAL 改用 SUBTOTAL 并确认函数编号

排查顺序建议从最简单的开始:先取消全部筛选看数据是否完整,再确认区域,最后才怀疑条件写法。多数问题在前两步就能定位,直接去改条件区域反而容易把原本正确的设置改乱。

什么情况下不该用筛选

筛选是好用的工具,但不是所有「只看部分数据」的需求都应该由它承担。以下几种情况,换方案往往更省事。

  • 需要把结果长期保留并分发给多人时,用高级筛选的「复制到其他位置」或直接另存新表,避免对方在自己电脑上重新筛一遍得到不同结果。
  • 数据量非常大、且需要频繁切换筛选条件时,数据透视表的响应通常更稳定,也不容易因为区域选错而失效。
  • 需要按多个不同维度交叉查看时,筛选一次只能给一个视角,逐个切换的成本远高于透视表的一次性布局。
  • 多人同时编辑同一份文件时,筛选状态是本地视图,不会同步给他人,容易造成「我看到的和你看到的不一样」的沟通误差。
  • 条件本身是动态的(例如「高于平均值」「最近 30 天」),用辅助列把判断固化下来,比每次重设条件更不容易出错。

反过来说,如果只是临时看一眼异常记录、确认某几条订单的状态,或者在做数据分析前的探索性查看,自动筛选依然是最快的选择,没有必要为了「规范」去搭一套透视表。

最佳实践检查表

把上面这些内容压缩成一份可以照着走的清单,在每次处理重要表格前过一遍。

  1. 筛选前先确认数据区连续,没有整行空白和用于表头的合并单元格。
  2. 检查参与比较的列是否为数值型,文本型数字先转换再筛选。
  3. 能用自动筛选解决的,不要上高级筛选;出现跨列「或」的需求时再切换。
  4. 高级筛选的条件区域单独放在空白处,与数据区隔开至少一行。
  5. 条件区域的标题从源表复制,不要手打。
  6. 需要交付结果时,用「复制到其他位置」产出静态表,不要发带筛选状态的原文件。
  7. 合计行改用 SUBTOTAL,并根据是否需要忽略手动隐藏行选择 9 或 109。
  8. 在筛选状态下做删除、粘贴、批量填充前,先取消筛选核对总行数。
  9. 公式引用了可能被隐藏的行时,用查找定位错误值,而不是靠翻页。
  10. 需要反复使用的条件,沉淀到独立条件表或辅助列,不要每次重设。

这份清单并非每一步都必须执行,前三条是基础项,缺失时出问题的概率最高;后面几条更偏向协作与交付场景,按实际需要取舍即可。

常见问题

问:自动筛选能不能实现两个不同列的「或者」关系?

答:不能直接在界面上实现。自动筛选在同一列内可以表达多个值的「或」,但跨列时只能取交集。跨列取并集需要改用高级筛选,把两个条件写在条件区域的不同行。

问:筛选之后被隐藏的行,会不会在保存时丢失?

答:不会。筛选状态下隐藏的行依然完整保存在文件里,别人打开时默认也是完整数据。真正会导致数据丢失的是删除和覆盖操作,而不是筛选本身。

问:为什么筛选「金额大于 10000」时,9000 反而排在了前面?

答:这是文本型数字的典型表现,比较时按字符逐位进行,而不是按数值大小。用 ISNUMBER 验证,返回 FALSE 即为文本型,转换为数值后重新筛选即可恢复正常。

问:手机上能完成多条件的高级筛选吗?

答:移动端的功能入口相对精简,多条件组合与条件区域设置的操作路径更深,各版本差异也较大。经验性建议是复杂设置回到桌面端完成,移动端只用于查看结果和简单的单列筛选。

问:筛选和排序应该先用哪个?

答:一般先筛选后排序。先缩小范围再做排序,结果更集中,也便于判断排序结果是否符合预期。反过来的话,排序会作用于全部行,视觉干扰更大。

小结与下一步

回到最初那个问题:为什么筛完还是全表。多数时候答案落在三处——区域没选对、条件写错列、或者数据类型不是你以为的那样。把这三处确认完,WPS 表格按条件筛选数据本身并不复杂。真正需要花心思的是后半段:筛选改变的是显示状态,不改变数据本身,因此合计、复制、删除这些操作必须显式地考虑隐藏行。

如果你的需求只涉及单列条件或跨列取交集,自动筛选的自定义条件足够应付;一旦出现跨列的「或者」,就该转到高级筛选,并接受维护一小块条件区域的成本。需要把结果交出去时,用「复制到其他位置」生成静态表,比让对方自己筛更可靠。

下一步建议做一件具体的事:找一份你手上正在处理的表格,按本文的检查表把区域、数据类型、合计公式三项核对一遍。这三项是最容易留下隐患的地方,改完之后再去看后面那些进阶用法,会顺畅很多。如果只打算先改一个习惯,那就从这两条开始——按下筛选前先确认区域,按下删除前先取消筛选。