【问题标题】:How to delete combine duplicates如何删除组合重复项
【发布时间】:2019-07-07 02:10:50
【问题描述】:

我有问题

我必须从第 3 列中删除重复项,但前提是第 1 列相同且总和值重复。

感谢回答

【问题讨论】:

  • 到目前为止你发现了什么?
  • 我只找到从 2 列中删除重复项的宏,任何包含 3 列的内容。我不是程序员,但我需要很多这样的东西。
  • 在那种情况下我很抱歉,但这不是一个免费的编码网站。人们在陷入代码/公式时会在这里发帖,但在您的情况下,我建议您考虑学习或招聘。
  • 您可以轻松录制宏来执行此操作。阅读宏记录器生成的代码,你会从这种练习中学到很多东西。

标签: excel vba duplicates


【解决方案1】:

试试:

Option Explicit

Sub test()

    Dim LastrowA As Long, LastrowF, i As Long, y As Long, j As Long
    Dim Ad_Desc As String
    Dim Total As Double
    Dim arr As Variant
    Dim Exist As Boolean

    With ThisWorkbook.Worksheets("Sheet1")

        LastrowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 2 To LastrowA
            Ad_Desc = .Range("A" & i).Value & "_" & .Range("C" & i).Value
            Total = .Range("B" & i).Value

            If i = 2 Then
                For y = i + 1 To LastrowA
                    If .Range("A" & y).Value & "_" & .Range("C" & y).Value = Ad_Desc Then
                        Total = Total + .Range("B" & y).Value
                    End If
                Next y

                    LastrowF = .Cells(.Rows.Count, "F").End(xlUp).Row
                    .Range("F" & LastrowF + 1).Value = .Range("A" & i).Value
                    .Range("G" & LastrowF + 1).Value = Total
                    .Range("H" & LastrowF + 1).Value = .Range("C" & i).Value


                    arr = Array(Ad_Desc)

            Else
                Exist = False
                For j = LBound(arr) To UBound(arr)
                    If arr(j) = Ad_Desc Then
                        Exist = True
                        Exit For
                    Else
                        Exist = False
                    End If
                Next j

                If Exist = False Then

                    For y = i + 1 To LastrowA
                        If .Range("A" & y).Value & "_" & .Range("C" & y).Value = Ad_Desc Then
                            Total = Total + .Range("B" & y).Value
                        End If
                    Next y

                    LastrowF = .Cells(.Rows.Count, "F").End(xlUp).Row
                    .Range("F" & LastrowF + 1).Value = .Range("A" & i).Value
                    .Range("G" & LastrowF + 1).Value = Total
                    .Range("H" & LastrowF + 1).Value = .Range("C" & i).Value

                    ReDim Preserve arr(0 To UBound(arr) + 1)
                        arr(UBound(arr)) = Ad_Desc

                End If

            End If

        Next i

    End With

End Sub

结果:

【讨论】:

  • 很高兴听到我的帮助。
【解决方案2】:

我在 A20:C29 范围内输入了您的示例数据。然后我用下面的公式创建了一个辅助列。

=SUMIFS($B$20:$B$29,$A$20:$A$29,$A20,$C$20:$C$29,$C20)

将帮助列复制到剪贴板和 PasteSpecial > 值(用结果值替换公式)。

然后将辅助列剪切/粘贴到 B 列中,并根据 A 列和 C 列删除重复项

【讨论】:

  • 它对我有用。为什么你认为它不能为你做同样的事情?
  • 不知道为什么,我用的是2010
  • 我也使用 Excel 2010。您是否将数据复制到 A20:C29?如果它们在 A2:C11 中,则公式将不起作用,除非您调整参考。
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多