суммировать все строки и заголовки, если даты строк и заголовков меньше или равны определенной дате - PullRequest
1 голос
/ 12 апреля 2019

У меня есть таблица с датами в качестве заголовков для строки и столбца - каждая ячейка суммирует транзакции с датой происхождения в строке и датой очистки в столбце.

, например

               31/1/2019    28/2/2019    31/3/2019
31/1/2019           -100         -200         -300
28/2/2019            -10          -20          -30
31/3/2019             -1           -2           -3

Я бы хотел, чтобы формула суммировала матрицу, в которой заголовки столбцов и заголовки строк меньше или равны определенной дате.

Используя пример выше:

31/1/2019 = -100
28/2/2019 = -330
31/3/2019 = -666

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Возможно формула, подобная этой:

=IF(AND($A$2<=$A6,$B$1<=$A6),SUM($B$2:INDEX($B$2:$D$4,MATCH($A6,$A$2:$A$4,1),MATCH($A6,$B$1:$D$1,1))),0)

enter image description here

Или слегка пересмотрено:

=IFERROR(SUM($B$2:INDEX($B$2:$D$4,MATCH($A6,$A$2:$A$4,1),MATCH($A6,$B$1:$D$1,1))),0)
0 голосов
/ 12 апреля 2019

Я некоторое время пытался сделать то, что вы просите с помощью формул, и я не смог, поэтому я написал небольшую функцию, которая будет работать для вас как формула. Вам нужно поставить этот код:

Option Explicit
Function MySumIf(SumRange As Range, Criteria As Range) As Double

    Dim arr, i As Long, j As Integer

    arr = SumRange.Value
    For i = 2 To UBound(arr)
        For j = 2 To UBound(arr, 2)
            If arr(i, 1) <= Criteria.Value And arr(1, j) <= Criteria.Value Then MySumIf = MySumIf + arr(i, j)
        Next j
    Next i

End Function

На модуле внутри VBA. Как ты можешь это сделать? Нажмите ALT+F11 на вашем Excel, и появится окно с VBA -> Слева вы увидите окно с именем Projects, там вы нажимаете правой кнопкой мыши на что-нибудь и идете вставить -> модуль -> вставить код на в пустом окне оно появится.

Чтобы использовать функцию, просто напишите =MySumIf(RangeToSumWithDates,DateCriteria) Вот так:

Formula

Результат:

Result

Надеюсь, это поможет. Единственным недостатком является то, что вам нужно поделиться этим кодом, чтобы работать на кого-то другого или поделиться книгой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...