【问题标题】:Remove Duplicate rows but Keeping the highest value删除重复行但保留最高值
【发布时间】:2021-11-05 04:11:20
【问题描述】:

我有 8 个带有数据的 ColumnsColumn 1 中有多个重复项,其他列有值和文本。

我想保持Column 5 的最高值并从Column 1 中删除重复项。

您的帮助将不胜感激。

Sub KeepHighvalue()

Dim MyRange As Range
Dim LastRow As Long
Dim Sht1 As worksheet
Set Sht1 = Worksheets("Sheet1") 
LastRow = Sht1 .Range("A" & Rows.Count).End(xlUp).Row
Set MyRange = Sht1 .Range("A1:A" & LastRow)
MyRange.RemoveDuplicates Columns:=1, Header:=xlYes

End Sub

usaupload.com/5g09/Data.xlsx

【问题讨论】:

  • 您是否尝试过使用数据透视表?此外,如果您有 Excel365,您可以添加到您的代码 MAXIFS,循环通过您的列 A,如果第 5 列中的值与最高值匹配,则不执行任何操作,否则删除行。
  • 您喜欢排除所有出现的最高值吗?
  • 是的,我已经尝试过使用数据透视表,并且我有超过 2000 多行,其唯一值接近 500+。但是皮科特表正在重复重复。我正在使用 Office 2016。
  • 是的,我只想要 Column 5 中具有最高值的行,其中 Column A 重复项将被删除。
  • 也许我累了,但我仍然不能完全理解你的意思......当你谈论“唯一具有最高价值”时,这意味着这个最高价值可能会出现更多。在这种情况,要保留哪一行。第一次出现?你为什么不尝试按照我的建议,按照我的建议放置两张图片(初始和之后)?

标签: excel vba


【解决方案1】:

假设可以对数据进行排序(并假设我通过保持最高值正确解释了您的意思),以下是解决问题的一种方法。它将删除行(在定义的 8 列数据中,从 A1 开始),其中数据在 A 列中重复,在 E 列中保留具有最高值的行 (5)。

Sub KeepHighvalue()

    Dim lgLastRow&, rgData As Range
    
''' Set target data area (rgData)
    With Worksheets("Sheet1")
        lgLastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        Set rgData = .Range("A1:H" & lgLastRow)
    End With

''' Remove rows with duplicates in column 1, keeping rows with highest values in column 5
    With rgData
        .Sort Key1:=.Columns(5), Order1:=xlDescending, Header:=xlYes
        .RemoveDuplicates Columns:=1, Header:=xlYes
    End With

End Sub

如果排序不正确,解决方案会稍微复杂一点。

==================================================== ==========
编辑:之前和之后的示例
==================================================== ==========

【讨论】:

  • 你测试过 Spinner 吗?在我阅读时,如果重复项与第 5 列中的最高值位于同一行,则最高值最终会被删除。
  • 你提出问题的方式很有趣......但只有当你确定排序范围内最后一次出现最大值的位置并调整@时它才会起作用987654324@(用于删除重复项)从下一行开始。使用Header:=xlNo。否则,我无法理解只有排序才能避免那些行(E:E 中的最大值)删除,如果它们位于 A:A 中的重复值行上...
  • 谢谢@Spinner,但保持类似的更高值。
  • @dra_red:是的,我同意。我确实看到了 8 列与 7 列的不一致。但决定“嗯,我确信 ShRa 知道哪个是正确的,并且可以适当地适应”。还考虑了“A 和 E 中的重复项呢?”。但由于那不在规格中,所以想“让我们去一垒看看是否会出现什么”。 :)
  • 不确定这是否意味着它可以满足您的所有需求,或者是否还有您想要解决的问题。由于您尚未将此标记为答案,我认为是后者?如果是这样,你能说明它做了什么你不想要的,或者它没有做什么你想要的吗?
猜你喜欢
  • 2019-10-27
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2019-06-10
  • 1970-01-01
  • 2021-05-19
  • 2019-04-06
相关资源
最近更新 更多