Excel查找同ID且时间间隔≤30分钟的条目问题求助
修复相同ID且30分钟内重复条目的检测公式
原公式问题分析
你的C列数组公式逻辑存在多处错误,导致始终返回FALSE:
- ID匹配逻辑颠倒:原公式中
A2=$A$2:$A$7<>A2的写法完全错误,实际需要匹配与当前行ID相同的其他行,而非不同ID - 时间差判断混乱:公式中
B2-$B$2:$B$7<>B2这类写法不符合Excel逻辑,正确方式是计算时间差的绝对值,并判断是否≤30分钟(对应Excel数值为30/1440=0.020833) - 未排除当前行:没有过滤掉当前行与自身的时间差(始终为0),导致逻辑判断失效
修复后的C列公式
方法1:数组公式(兼容Excel 2019及更早版本)
在C2单元格输入以下公式,按Ctrl+Shift+Enter触发数组计算(大括号无需手动输入),然后下拉填充:
{=IF(SUM(--($A$2:$A$7=A2)*--(ABS(B2-$B$2:$B$7)<=0.020833)*--(ROW($A$2:$A$7)<>ROW(A2)))>0,"TRUE","FALSE")}
公式逻辑:
$A$2:$A$7=A2:筛选出所有与当前行ID相同的条目ABS(B2-$B$2:$B$7)<=0.020833:判断时间差的绝对值是否≤30分钟ROW($A$2:$A$7)<>ROW(A2):排除当前行自身- 用SUM统计符合条件的条目数,大于0则返回"TRUE",否则"FALSE"
方法2:动态数组公式(Excel 365/2021专属)
无需手动触发数组计算,直接输入后下拉:
=IF(SUM(($A$2:$A$7=A2)*(ABS(B2-$B$2:$B$7)<=0.020833)*(ROW($A$2:$A$7)<>ROW(A2)))>0,"TRUE","FALSE")
方法3:高效简化版(利用ID已排序的特性)
因为ID已经按数字排序,相同ID会集中在一起,只需检查当前行的上一行和下一行即可,效率更高:
在C2单元格输入:
=IF(OR(AND(A2=A3,ABS(B2-B3)<=0.020833),AND(A2=A1,ABS(B2-B1)<=0.020833)),"TRUE","FALSE")
下拉填充即可(第一行可单独设置为"FALSE",因为没有上一行)
D列公式调整
原D列公式可以保留,建议调整为以下写法(适配C列的结果),在D2单元格输入后下拉:
=IF(AND(A2=A1,C2="TRUE"),"",A2)
逻辑:如果当前ID与上一行相同,且当前行是重复条目(C2为"TRUE"),则显示空值,否则显示ID
内容的提问来源于stack exchange,提问作者Banana
相关产品推荐
相关产品推荐

