2014-02-17 2 views
0

Если есть способ использовать sumif в сочетании с countif?Получите сумму ТОЛЬКО повторяющихся значений

, например, если у меня есть

TransactionNo|NumberToSum 
    1  | 
    1  | 9 
    2  | 6 
    3  | 3 
    4  | 
    4  | 4 
    5  | 6 
    6  | 4 
    7  | 
    7  | 9 
    8  | 7 
    9  | 4 
    10  | 
    10  | 1 
    11  | 3 
    12  | 6 

Мой результат будет:

, поскольку значения 1,4,7,10 дублируются, поэтому мне нужно суммировать NumberToSum тех 9,4,9,1 в этом случае ,

В идеале я хотел бы Somethings вдоль линий =SumIf(A:A,Count>1,B:B)

Где суммируется B, если счетчик А внутри А: А> 1.

но =SUMIF(A:A,COUNT(A:A)>1,B:B) не работает.

ПРИМЕЧАНИЕ: данных является НЕ сортируется как он появляется в моем примере.

Если бы я хотел сделать это в VBA один быстрый способ может быть:

Sub sumdups() 
Dim rng As Range 
Dim rng2 As Range 
Dim Sum As Long 

Set rng = [A2:A17] 

For Each rng2 In rng 
    If WorksheetFunction.CountIf(Range("A1:A17"), rng2.Value) > 1 Then 
     Sum = Sum + rng2.Offset(0, 1).Value 
    End If 
Next rng2 
End Sub 

Другой вариант я попытался это, чтобы добавить столбец с формулой

=IF(COUNTIF(A:A,A2)>1,B2,"") 

Затем суммировать столбец помощника , но я надеюсь, что есть простая формула, которая может делать то же самое в одной ячейке.

Я действительно ищу более быструю формулу, которая может быть введена в одну ячейку, без необходимости каких-либо дополнительных вычислений.

ответ

4

Эта формула работает для меня:

=SUMPRODUCT(1*(COUNTIF(A1:A100,A1:A100)>1),(B1:B100)) 

или для всей колонки (немного медленнее):

=SUMPRODUCT(1*(COUNTIF(A:A,A:A)>1),(B:B)) 
+0

Они заморозили первенствовать, у меня есть более 800 000 строк для обработки. Можно ли использовать эту формулу ТОЛЬКО на видимых клетках? Нефильтрованные строки? Как функция 'Subtotal()'? – user2125348

+1

@ user2125348 Практически любая формула замедлялась бы на 800k строк, даже на макросе. Если производительность важна, вы можете вместо этого использовать базу данных, так как вы также приближаетесь к пределу строки Excel (по крайней мере, по умолчанию предел excel 2007/2010 AFAIK) – Jerry

+0

@ user2125348, 'возможно использовать эту формулу ТОЛЬКО на видимые клетки? '- нет, это невозможно –

Смежные вопросы