Google Sheets如何筛选同时有审核通过与驳回记录的提交者
方案1:Excel/WPS 表格公式方案(适配1万行规模无性能压力)
假设你的表格列对应字段如下:
- A列:提交者姓名
- B列:处理日期
- C列:审核结果(
approve/reject) - 第1行为表头,第2行起为数据行
步骤1:新增辅助列标记符合要求的用户
根据你的软件版本选择对应公式,输入到D2单元格后下拉填充整列即可:
适用Excel 365/2021及以上、WPS最新版
=IF(COUNT(UNIQUE(FILTER(C:C,A:A=A2)))=2,"符合","不符合")
公式逻辑:提取当前用户的所有审核结果去重,去重后数量为2即代表同时存在驳回和通过记录。
适用所有旧版本Excel、WPS
=IF(AND(COUNTIFS(A:A,A2,C:C,"approve")>0,COUNTIFS(A:A,A2,C:C,"reject")>0),"符合","不符合")
公式逻辑:分别统计当前用户的通过记录数、驳回记录数,两个数值都大于0即符合筛选要求,该公式计算效率足以支撑10万行以内的数据集。
步骤2:提取目标用户
对D列筛选值为「符合」的行,再选中A列执行「数据→删除重复值」操作,即可得到所有满足要求的唯一用户列表。
方案2:Python pandas 处理方案(适配超10万行大规模数据集)
如果后续数据量持续增长,用pandas处理效率更高,参考代码如下:
import pandas as pd # 读取数据集,替换为你的实际文件路径 df = pd.read_excel("提交结果数据集.xlsx") # 筛选同时存在两类审核结果的用户 user_group = df.groupby("提交者姓名")["审核结果"].nunique().reset_index() target_users = user_group[user_group["审核结果"] == 2]["提交者姓名"].tolist() # 输出最终目标用户列表 print(target_users)
可选校验逻辑
如果需要排除「先通过后被驳回」的异常数据,确认驳回记录确实在通过记录之前,可新增以下判断逻辑:
# 确保数据已按要求排序 df_sorted = df.sort_values(by=["提交者姓名", "处理日期"]) def check_user_history(group): # 取用户第一条通过记录的位置 first_approve_idx = group[group["审核结果"] == "approve"].index.min() if pd.isna(first_approve_idx): return False # 判断通过记录之前是否存在驳回记录 return (group.loc[:first_approve_idx, "审核结果"] == "reject").any() # 得到最终符合要求的用户列表 valid_users = df_sorted.groupby("提交者姓名").filter(check_user_history)["提交者姓名"].unique().tolist()
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

