Google Sheets中如何使用FILTER函数返回与上一行值不同的行
相邻行差异筛选实现方法
你之前使用的=filter(B:B, B2 <> B1)失效的核心原因是:FILTER函数要求筛选条件的数组长度与待筛选区域的行数完全匹配,你写的条件仅为两个单元格的单次对比,无法逐行完成整列的相邻值差异判断。
可按需选择以下两种实现方案:
方案1:动态数组公式(适配Excel 365、Google Sheets)
仅需输入单条公式即可自动溢出全部结果:
=FILTER(A2:C12, B2:B12 <> VSTACK("", B2:B11))
参数说明:
A2:C12:替换为你实际的全量数据区域(不含表头行)- B列:替换为你判断相邻值差异的参考列(本案例中为Category列)
VSTACK("", B2:B11)的作用是将参考列整体下移一行,第一行补空值,保证第一行数据会被判定为与上一行(空值)不同,正常保留。
如果使用Google Sheets,可用数组简写代替VSTACK,公式可简化为:
=FILTER(A2:C12, B2:B12 <> {""; B2:B11})
方案2:辅助列法(兼容所有版本Excel、各类在线表格工具)
- 第一步:在数据右侧新增空白辅助列,比如D列,在对应第一行数据的D2单元格输入公式:
=B2<>B1 - 第二步:将D2的公式下拉填充到所有数据行,辅助列会自动返回布尔值:返回TRUE代表当前行参考列的值与上一行不同,属于需要保留的行
- 第三步:对整表筛选辅助列值为TRUE的行,即可得到目标结果
内容的提问来源于stack exchange,提问作者MrSalta
相关产品推荐
相关产品推荐

