Excel 2003 SUM из табличных данных с использованием нескольких критериев - PullRequest
0 голосов
/ 19 января 2012

Я боролся с этим некоторое время ... У меня есть следующая таблица данных на листе с именем PickupData

enter image description here

У меня есть лист, где я пытаюсь суммировать доход (col d), где org_code (col a) = значение в строке 18, а месяц (col c) = значение в столбце a

enter image description here

Я пытался использовать SUMPRODUCT, SUM (IF (бла, IF (бла, x, 0), 0) (нажатие ctrl-shift-enter) и даже мастер условных сумм. Не думаю, что смогу использовать DSUM, поскольку для параметра критерия требуется передать диапазон ячеек.

Я также попытался разложить ячейки, так как думал, что это может повлиять на результаты.

Кто-нибудь может предоставить рабочее решение?

Вот рабочая тетрадь: здесь

Спасибо

Lee

Ответы [ 3 ]

3 голосов
/ 19 января 2012

Sumproduct будет работать для вас:

=SUMPRODUCT(D1:D8,--(A1:A8=OrgRef),--(C1:C8=MonthRef))

OrgRef и MonthRef являются заполнителями для адреса ваших фильтров.

В вашем примере книги код Org - это текст, а поле Org_Code, в которое вы ввели 26, - число. Они не будут соответствовать. Преобразуйте свои коды org в числа или введите предисловие 26 с помощью ', чтобы пометить его как строку.

0 голосов
/ 19 января 2012

СУММА (ЕСЛИ (... должна работать, но да, вам нужно отменить слияние ваших ячеек, потому что формулы массива не работают в объединенных ячейках. Должно работать следующее, введенное в B19 (помня ctrl + shift +)введите)

=SUM(IF(PickupData!$A$2:$A$8=B$18,IF(PickupData!$C$2:$C$8=$A19,PickupData!$D$2:$D$8,0),0))
0 голосов
/ 19 января 2012

Вы пробовали:

SUMIF()
SUMIFS()

или Excel Macros?

Код

Sub Test1()
    Dim rRange As Range
    Set rRange = Range("C:C")

    Dim iSum As Integer
    For Each rRange In rRange

        If (rRange.Offset(0, -2) = 18) Then
            iSum = iSum + rRange.Value
        End If

        If (IsEmpty(rRange.Offset(1, 0))) Then
            Exit For
        End If
    Next rRange

    Debug.Print iSum
End Sub
...