我有点迷失在哪里开始解决问题 .
数据集:
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行]
4 回答
输入下面的公式作为数组公式(使用Ctrl Shift Enter)并填写 . 复制粘贴值然后删除行为TRUE
将每列从最小到最大排序 . 在辅助列中,公式= - ((a1&b1)=(a2&b2))过滤器辅助列1,并选择特殊单元格仅可见单元格,删除每一行 . 这与您的示例数据完美匹配 . 删除2个值中的最小值我怀疑事情可能会更复杂,请告诉我 . 祝你有美好的一天 .
Alex Bell提出的解决方案是正确的方法 . 如果这是一个经常重复的过程,那么您可以镜像VBA中描述的方法 .
虽然可以通过macro recorder轻松记录此方法供以后使用,但它为Range.Sort method生成的代码非常详细 . 这应该是你需要的一切 .
这看起来是正确的 . 检查Range.CurrentRegion property上的文档,确保范围参考符合您的需求 . 同样,Range.RemoveDuplicates method和Range.Sort method还有其他可以实现的选项 .
与您的问题相关,可以通过使用VBA宏或仅使用Excel工作表函数或仅执行如下所述的基本数据操作来实现该任务 . 假设您在A,B和C列中有初始数据集:
首先,按降序对C列进行排序,得到以下结果:
然后在列A,B上应用“删除重复项”数据操作以获得最终结果:
希望这可能有所帮助 . 最好的祝福,