如果文本相同,则求和

时间:2019-07-15 10:25:20

标签: excel vba

我有一个列表,其中在AD列中有数字,在AE中有值。在AG列中,我有数字,但没有重复。当数字相同时,我想对AH列中的值求和。

100453504   1       
100453504   2   
100453504   3           
100453504   4           
100453504   5           
100453504   6           
100453504   7           
100453504   8           
100453627   9           
100453627   10          
100453627   11  

100453504   36      
100453627   30

我设置了范围,但我不知道如何对其中两个进行操作。

Dim Projects As Range
Projects = Range("Ad5", Range("Ad5").End(xlDown))

Dim Sortedprojects As Range
Sortedprojects = Range("Ag5", Range("Ag5").End(xlDown))

For Each cell In Projects

If cell.Value = Sortedprojects.Cells.Value Then

2 个答案:

答案 0 :(得分:3)

赞:

enter image description here

使用公式:=SUMIF(A1:B14,D1,B1:B14),相应地设置范围

如果您仍然想使用Macro:

Dim Projects As Range
Set Projects = Range("AD5", Range("AD5").End(xlDown))

Dim Sortedprojects As Range
Set Sortedprojects = Range("AG5", Range("AG5").End(xlDown))

Dim cel As Range, cel1 As Range, Sm As Integer

For Each cel In Sortedprojects

Sm = 0

    For Each cel1 In Projects

         If cel.Value = cel1.Value Then
            Sm = Sm + cel1.Offset(0, 1).Value
         End If
    Next

    cel.Offset(0, 1).Value = Sm

Next

我们正在遍历非重复范围,并在满足条件的情况下对重复范围求和。

我建议您使用SumIf

答案 1 :(得分:1)

我也建议在这种简单情况下使用公式。 如果您有所有出现数字的列表,则可以输入:

=SUMPRODUCT((A1:A14=D2)*(B1:B14))
您要对其他值求和的数字后面的

。如果您没有所有不带双打的单号列表,则可以使用以下命令:阵列格式:CTRL + SHIFT + ENTER

=IFERROR(INDEX(A:A,MATCH(1,(COUNTIF(D$1:D1,A$1:A$99)=0)*(A$1:A$99<>""),0)),"")

下拉。这将产生一个没有双打的列表。第一个公式上方的单元格必须为空或带有标题。

enter image description here