VBAmacros查找重复,并保持较大的价值

我有点失落,从哪里开始解决这个问题。

数据集:

AAA15200 12A 60 AAA15200 12B 60 AAA15200 12C 60 AAA15200 13A 60 AAA15200 13A 70 AAA15200 12A 65 

问题:
第1列将是一个产品代码。
我需要find每个产品在第2列重复。
如果在第二列发生重复,我需要去第3列,find哪个是较小的值,并删除较小的值的行。

所以在上面的数据集 – AAA15200有一个13A的副本。 底部重复有70是大于60,所以我想删除包含60的行。
底线也是用顶行复制,而底行有65个大于60的。所以删除顶行。

然后,a行将变成一个新的产品代码,同样需要为它发生。 [这是为了工作,如果没有find解决办法,我们将不得不手动通过9000行]

与您的问题相关,可以通过使用VBAmacros或Excel工作表函数,或者如下所述的基本数据操作来完成任务。 假设您在列A,B和C中设置了初始数据:

 ABC AAA15200 12A 60 AAA15200 12B 60 AAA15200 12C 60 AAA15200 13A 60 AAA15200 13A 70 AAA15200 12A 65 

首先,按降序对C​​列进行sorting,结果如下:

 ABC AAA15200 13A 70 AAA15200 12A 65 AAA15200 12A 60 AAA15200 12B 60 AAA15200 12C 60 AAA15200 13A 60 

然后在列A,B上应用“删除重复”数据操作以获得最终的:

 ABC AAA15200 13A 70 AAA15200 12A 65 AAA15200 12B 60 AAA15200 12C 60 

希望这可能有帮助。 最好的祝福,

Alex Bell提出的解决scheme是正确的方法。 如果这是一个经常重复的过程,那么您可以使用VBA中描述的方法。

虽然这种方法可以很容易地logging下来,以便以后通过macroslogging器使用 ,但它为Range.Sort方法生成的代码非常冗长。 这应该是你需要的一切。

 with worksheets("Sheet1") with .cells(1, 1).currentregion .cells.sort key1:=.columns(3), order1:=xldescending orientation:=xltoptobottom, header:=xlyes .removeduplicates columns:=array(1, 2), header:=xlyes end with end with 

这看起来是正确的。 检查Range.CurrentRegion属性上的文档以确保范围引用将满足您的需求。 同样, Range.RemoveDuplicates方法和Range.Sort方法也有可以实现的附加选项。

input下面的公式作为数组公式(使用Ctrl + Shift + Enter)并填写。 复制粘贴值然后用TRUE删除行

在这里输入图像说明

将每列从最小到最大sorting。 在帮助栏中,公式= – ((a1&b1)=(a2&b2))在1上过滤帮助列,只select特殊单元格的可见单元格,删除每一行。 这与您的示例数据完美结合。 从2个值的最小值被删除我怀疑事情可能会更复杂,让我知道。 祝你有美好的一天。