【问题标题】:excel vba remove duplicates and sum corresponding valuesexcel vba删除重复项并对相应值求和
【发布时间】:2018-03-09 16:24:32
【问题描述】:

我找到了这段代码,但我无法让它在我的单元格范围内工作。我的例子如下。 “更正顺序”在 C 列,“数量”在 D 列。我想删除 C 列中的重复项,将 D 列中的相应值相加并粘贴到 F1:G40 范围内。如果我将 col C 复制并粘贴到 Col A,则下面的代码有效,否则它会删除重复项但值都是“0”??

A   B   C   D
    Corrected Order (LCP)   Qty
    Orange  12
    Pear    9
    Pear    9
    Pear    6
    Orange  6
    Orange  3
    Orange  1
    Apple   34
    Apple   4
    Apple   4
    Apple   67



Option Explicit

Sub main()

With Worksheets("Fruit Stock") '<== change "Fruit Stock" as per your actual sheet name

    With .Range("C1:D40").Resize(.Cells(.Rows.Count, 3).End(xlUp).Row)
        .Copy
        With .Offset(, .Columns.Count + 1)
            .PasteSpecial xlPasteValues ' copy value and formats
            .Columns(2).Offset(1).Resize(.Rows.Count - 1, 1).FormulaR1C1 = "=SUMIF(C1,RC1,C[-" & .Columns.Count + 1 & "])"
            .Value = .Value
            .RemoveDuplicates 1, xlYes
        End With
    End With

End With
End Sub

【问题讨论】:

  • 是否要删除重复的水果名称但添加所有水果的值。那么梨的一行显示总共 24 个?
  • 数据透视表可以做到这一点。
  • 不,我有不同的数据低于和跨越这个范围。我为此合并数据保留了 2 列。我知道我可以使用合并函数来执行此操作,但我想要一个快速命令按钮宏,因为我将定期执行此功能
  • 对不起,只是回复第一个回复,是的,这就是我想要的梨 24 在移位列中
  • 为什么不直接使用 if 语句使 SUMIF 方程(其中引用为空白或未找到)显示“”?

标签: excel vba


【解决方案1】:

更正“CX,RCX”,其中 X 是您的列号(对于 C 列,X=3) 还更正了一些绝对地址,这意味着它仅适用于一种情况。特别是调整为 3 列的大小没有意义。

Sub main()

With ActiveSheet '<== change "Fruit Stock" as per your actual sheet name

    With Range("C1:D40")
        Set r = .Resize(.Cells(.Rows.Count, .Columns.Count).End(xlUp).Row)

        With r

            .Copy
            With .Offset(, .Columns.Count + 1)
                .PasteSpecial xlPasteValues ' copy value and formats
                .Columns(2).Offset(1).Resize(.Rows.Count - 1, 1).FormulaR1C1 = "=SUMIF(C" & r.Column & ",RC" & r.Column & ",C[-" & .Columns.Count + 1 & "])"
                .Value = .Value
                .RemoveDuplicates 1, xlYes
            End With

        End With

End With
End With
End Sub

【讨论】:

  • 上面的答案对我有帮助,但我还有另一个问题。我需要用标称值替换删除的重复项,例如“重复项”。我有 4 列的原因让我们说,水果,水果数量,蔬菜,蔬菜数量。我的 vba 代码将水果和水果数量合并到指定的 2 列,将蔬菜和蔬菜数量合并到另一个指定的 2 列。问题是,如果 Fruit col 的重复项比 Veg col 多,则数据会向上移动以导致未对齐。如果我可以用“重复我不应该有这个问题。有什么建议吗?
  • 因此,如果 Fruit col 有 4 个重复项,Veg col 有 1 个重复项,则错位为 3 个单元格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 2015-11-06
  • 2021-11-27
  • 2019-07-05
相关资源
最近更新 更多