сумма ячеек на основе текущей даты в таблице Excel - PullRequest
4 голосов
/ 09 июля 2009

У меня есть такая таблица:

date | 7/1 | 7/2 | 7/3 | 7/4
-----|-----|-----|-----|-----
 val |  3  |  5  |  1  |  3  
-----|-----|-----|-----|-----

Я хочу суммировать строку val, но только до текущей даты. Таким образом, если бы сегодня было 7/3, сумма была бы 3 + 5 + 1 = 9. Если бы сегодня было 7/4, это было бы 12.

Я понял это, чтобы получить количество столбцов:

=YEARFRAC(B1,TODAY())*360  // B1 is the first date -- 7/1

но я не могу понять, как заставить Excel сделать сумму:

=SUM(B2:<B+num cols above>2)

Предположительно, это как-то связано со ссылками и поиском, но я не совсем знаком с тем, как они работают ...

Ответы [ 4 ]

11 голосов
/ 09 июля 2009

Вы можете использовать SUMIF:

=SUMIF(A1:E1,"<="&TODAY(),A2:E2)

Предположим, что ваши даты в a1: e1, а ваши значения в a2: e2.

0 голосов
/ 20 июля 2016

Есть три способа получить сумму значений между датами.

  1. Использование суффиксов

    = СУММЕСЛИМН (В2: В15, А2: А15, "> =" & F3, А2: А15, "<=" & F4) </p>

  2. Использование sumproduct

    = СУММПРОИЗВ ((А2: А15> = F3) * (А2: А15 <= F4), В2: В15) </p>

  3. Использование смещения

    = СУММ (OFFSET (В1, MATCH (F3; A2: A15,0), 0, MATCH (F4, А2: A15,0) -match (F3; A2: A15,0) + 1,1))

Если диапазон дат находится в столбце A, а диапазон значений - в столбце B.

enter image description here

enter image description here

0 голосов
/ 09 июля 2009

Поместите этот VBA в модуль

Option Explicit

Public Function GetTotal(StartCell As Range) As Integer 
    Dim i As Integer, j As Integer

    i = StartCell.Row
    j = StartCell.Column

    If Cells(i, j) > Date Then
        GetTotal = 0
        Exit Function
    End If

    While Cells(i, j) <> DateAdd("d", 1, Date) 'values up to an including today'
        GetTotal = GetTotal + Cells(i + 1, j)
        j = j + 1
    Wend

End Function

, а затем используйте его в ячейке листа, вставив

=GetTotal([starting date cell])

, где [starting date cell] - это ячейка с датой, с которой вы хотите получить сумму. Значением ячейки таблицы будет сумма

0 голосов
/ 09 июля 2009

Функция OFFSET должна выполнить эту работу. Там похожий вопрос здесь . Не зная точного расположения вашей таблицы, я думаю, что ваша формула будет выглядеть примерно так:

=SUM(OFFSET(B2,0,0,1,DAY(TODAY()))) 

Где DAY (TODAY ()) возвращает день месяца. Это число затем используется как ширина диапазона до СУММЫ в СМЕЩЕНИИ.

Надеюсь, это было относительно ясно. Удачи.

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