我有点迷失在哪里开始解决问题。
数据集:
AAA15200 12A 60
AAA15200 12B 60
AAA15200 12C 60
AAA15200 13A 60
AAA15200 13A 70
AAA15200 12A 65
问题:
第1列是产品代码
我需要在第2列中找到每个产品的副本。
如果在第二列中出现重复,我需要转到第3列并找到哪个是较小的值,并删除较小值的行。
所以在上面的数据集中--AAA15200有13A的副本。底部副本有70,大于60,所以我想删除包含60的行 底线也与顶行重复,但底行有65,大于60.所以删除顶行。
然后,行a将更改为新产品代码,该代码需要为其生成相同的代码。 [这是为了工作,如果找不到解决方案,我们将不得不手动完成9,000多行]
答案 0 :(得分:4)
与您的问题相关,可以通过使用VBA宏或仅使用Excel工作表函数或仅执行如下所述的基本数据操作来完成任务。假设您在A,B和C列中设置了初始数据:
A B C
AAA15200 12A 60
AAA15200 12B 60
AAA15200 12C 60
AAA15200 13A 60
AAA15200 13A 70
AAA15200 12A 65
首先,按照降序对C列进行排序,得到以下结果:
A B C
AAA15200 13A 70
AAA15200 12A 65
AAA15200 12A 60
AAA15200 12B 60
AAA15200 12C 60
AAA15200 13A 60
然后在列A,B上应用“删除重复项”数据操作以获得最终结果:
A B C
AAA15200 13A 70
AAA15200 12A 65
AAA15200 12B 60
AAA15200 12C 60
希望这可能会有所帮助。最好的问候,
答案 1 :(得分:0)
Alex Bell提出的解决方案是正确的方法。如果这是一个经常重复的过程,那么您可以镜像VBA中描述的方法。
虽然可以通过macro recorder轻松记录此方法供以后使用,但它为Range.Sort method生成的代码非常详细。这应该就是你需要的一切。
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 property上的文档,确保范围参考符合您的需求。同样,Range.RemoveDuplicates method和Range.Sort method还有其他可以实施的选项。
答案 2 :(得分:0)
答案 3 :(得分:0)
将每列从最小到最大排序。 在辅助列中,公式= - ((a1& b1)=(a2& b2)) 过滤辅助列1,仅选择特殊单元格可见单元格,删除每一行。 这与您的示例数据完美匹配。删除2个值中的最小值我怀疑事情可能会更复杂,请告诉我。 祝你有美好的一天。