如何用电子表格函数筛选检查人员各地点最近到访记录?
解决人员-地点最近到访记录提取及筛选问题
先纠正你之前的公式错误
- MINIFS函数问题:你只指定了地点作为筛选条件,但要获取「每人每个地点」的最近到访,需要同时匹配人员姓名和地点名称两个条件。MINIFS的正确语法是
MINIFS(要取最小值的区域, 条件区域1, 条件1, 条件区域2, 条件2...),你之前的写法要么缺关键条件,要么条件逻辑错误,导致结果为0或不符合预期。 - AGGREGATE函数问题:你之前的公式没有加入人员条件,且布尔值相乘的写法会把不匹配的行转为0,导致取到的最小值是0;最后那个AGGREGATE公式参数顺序完全错误,函数编号5对应MIN,忽略选项4,第三个参数应为要计算的数值区域,你把条件放错了位置。
正确实现方法
假设你的表格结构为:
went to表:A列=地点名称,B列=人员姓名,G列=到访距今月份(数值越小表示到访时间越近)
方法1:用MINIFS提取每人-地点的最近到访
在新表格的目标单元格(比如C2)输入以下公式,匹配当前行的人员和地点,取对应G列的最小值:
=MINIFS(went_to!$G$2:$G$100, went_to!$A$2:$A$100, $A2, went_to!$B$2:$B$100, $B2)
下拉填充即可批量生成所有记录。
方法2:用AGGREGATE函数(兼容旧版Excel)
如果你的Excel版本不支持MINIFS(比如2016及以前),可以用AGGREGATE实现,同时加入双重条件:
=AGGREGATE(15, 6, went_to!$G$2:$G$100/((went_to!$A$2:$A$100=$A2)*(went_to!$B$2:$B$100=$B2)), 1)
- 函数编号15对应SMALL(取第k小值),忽略选项6表示忽略错误值;
- 用
/((条件1)*(条件2))的方式,不满足条件的行会生成#DIV/0!错误,被AGGREGATE忽略,最后取第1小的值(即最小值)。
方法3:用数据透视表(高效省心)
如果数据量较大,用透视表更便捷:
- 选中
went to表的全部数据区域,插入数据透视表; - 行字段依次拖入「人员姓名」和「地点名称」;
- 值字段拖入「到访距今月份」,修改值汇总方式为「最小值」;
- 生成的透视表直接就是每人每个地点的最近到访记录。
筛选近4个月未到访的地点
得到最近到访月份后,筛选出「距今月份>4」的记录即可:
- 公式生成的表格:添加筛选功能,在到访月份列筛选数值大于4的条目;
- 透视表:直接在「最小值:到访距今月份」字段中筛选大于4的数值。
内容的提问来源于stack exchange,提问作者yellow_melro
相关产品推荐
相关产品推荐

