对于每个ID,在C列和D列中找到最小值,并删除其他行。
我想要的解决方案,只是因为我想建立在这个代码添加更多的标准。
标准为:
每个ID找到最低value1
并保留整行,对于每个ID,也找到最低value2
并保留整行。
如果value1和value2的最低值在同一行中,则删除其他行。
我已经尝试修改下面的代码,但它只适用于1列重复。
我想到的一个解决方案是突出显示Value1和Value2的每个ID的最小值的整行,然后删除未突出显示的行。
Sub test()
ActiveSheet.Range("A:D").RemoveDuplicates Columns:=Array(3, 4), Header:=xlYes
End Sub
1条答案
按热度按时间k75qkfdt1#
好的,我已经找到了一个解决方案......但是它可能比手动操作要复杂得多,这取决于您的数据大小以及您需要多久执行一次操作。
**0)**删除整行重复:
筛选所有
**1)**将值1和值2相加:
然后,按V1 + V2排序,然后按ID号重新排序。
这将确保我们只返回1,有两个单一的最小值。
(示例见答案末尾)
**2)**检查值1和值2是否为ID号的最小值:
第一个月
=D2=MIN(FILTER($D$2:$D$24,$A$2:$A$24=A2))
**3)**运行
AND()
操作以查看两者是否均为最小值**4)**运行
OR()
操作,查看是否为最小值。=IF(SUM(FILTER($H$2:$H$24,$A$2:$A$24=A2))>0,0,IF(SUM(FILTER($I$1:I1,$A$2:A2=A2))<2,IF(OR(F2:G2),1,0),0))
**5)**最后,筛选具有
AND
或和OR
的项目列表:=FILTER(A2:D24,(H2:H24=1)+(I2:I24=1))
需要注意的是,如果不排序,可能会拉错。下面是排序:
这是未排序的: