Страницы: 1
RSS
суммироваие по условиям включая дату
 
Добрый день!

Помогите с решением задачи... пытаюсь через sumifs написать формулу, но, к сожалению, результат выдается неправильный... наверное что-то все-таки некорректно сделал.

Исходные данные содержат несколько полей включая ТИП (текстовые значения) и две колонки с датами а также количества.
Необходимо суммирование всех количеств где ТИП совпадает и дата находится в нужном диапазоне, указанном на первом листе как дата начала и дата конца диапазона.

Огромное спасибо за возможную помощь!
Изменено: vikttur - 21.07.2021 21:13:15
 
Пришлось немного повозиться и переделать файл на другом ПК где не стоит корпоративная система шифрования...
вот сейчас (ОЧЕНЬ) надеюсь все ок с файликом.
Изменено: vikttur - 21.07.2021 21:13:39
 
Михаил Pr, очень странные даты. Дата не читается датой. И не поймешь сразу. Не дай бог мне такие данные
Массивная формула
Код
=СУММ(ЕСЛИ((Sheet2!$A$2:$A$9=A2)*(--Sheet2!$B$2:$B$9>=--B2)*(--Sheet2!$B$2:$B$9<=--C2);--Sheet2!$C$2:$C$9))
Ps/ Работает? Нет? Можно еще ДатаЗнач прикрутить
Изменено: Михаил Л - 21.07.2021 19:45:28
 
=СУММПРОИЗВ(Sheet2!C2:C10*(Sheet2!A2:A10=A2)*(--Sheet2!B2:B10>=--B2)*(--Sheet2!B2:B10<=--C2))
Но правильнее - привести даты  к нормальному формату даты. Всего лишь три раза плюнуть через левое плечо повторить действие: выделить один столбец с датами, Данные-Текст по столбцам-Готово.
 
Спасибо за совет, Михаил.
не могу никак уйти от ошибок... можете в файл добавить вашу формулу? Заранее извиняюсь за беспокойство...
по поводу данных - вроде бы по внешнему виду данные выглядят как дата, при переводе типа ячейки в тип "даты" ничего не меняется... ровно те же сложности остаются. Датазнач на все типы моих дат выдает ошибку...
 
Михаил Pr, дата - это то же самое, что и число. Проверить дата в ячейке или нет - можно формулой ЕЧИСЛО().

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Михаил Pr написал: при переводе типа ячейки в тип "даты" ничего не меняется...
Формат ячейки и формат значения - не одно и то же.
Данные внешне выглядят, как даты, но там текст. И как бы Вы не меняли формат ячейки. текст останется текстом и внешне будет выглядеть. как дата.
А вот если в ячейку вписать дату (настоящую дату), то формат ее отображения можно менять, хотя дата останется числовым значением (количество дней от 01.01.1900)
Изменено: vikttur - 21.07.2021 21:35:49
 
Цитата
Михаил Pr написал:
можете в файл добавить вашу формулу?
Скорее всего, вам надо почитать о формулах массива
 
Спасибо большое за подсказку и за формулу. Тема для меня действительно незнакомая...
подскажите, а данная формула как то может быть изменена (например задать другой размер массива)?
при любых изменениях, даже минимальных формула выдает ошибку...  
 
Формула массива вводится тремя клавишами
 
Количество строк должны быть одинаковыми
Например, если $A$2:$A$9 изменили на $A$2:$A$40, то и в других диапазонах формулы должно быть 39 строк. $B$2:$B$40
А так покажите в примере при каких изменениях выходит ошибка
 
вот на этот вариант поменял
Код
=SUM(IF((Sheet2!$A$2:$A$25=A3)*(--Sheet2!$B$2:$B$25>=--B3)*(--Sheet2!$B$2:$B$25<=--C3),--Sheet2!$C$2:$C$25))

вроде как будто все размеры аналогично с 9 на 25 заменил, нажал 3 клавиши для того чтобы это была формула массива, но все равно ошибку выдает...
 
Михаил Pr, в примере покажите что не работает
 
Макрос в стандартный модуль, запускать при активном листе Sheet1
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
Dim List2 As Worksheet
Dim FoundCell As Range
Dim FAdr As String
   Set List2 = ThisWorkbook.Worksheets("Sheet2")
   iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   Range("D2:D" & iLastRow) = 0
  With List2
    For i = 2 To iLastRow
      Set FoundCell = .Columns(1).Find(Cells(i, "A"), , xlValues, xlWhole)
        If Not FoundCell Is Nothing Then
          FAdr = FoundCell.Address
          Do
            If FoundCell.Offset(, 1) >= Cells(i, "B") And FoundCell.Offset(, 1) <= Cells(i, "C") Then
              Cells(i, "D") = Cells(i, "D") + FoundCell.Offset(, 2)
            End If
            Set FoundCell = .Columns(1).FindNext(FoundCell)
          Loop While FoundCell.Address <> FAdr
        End If
    Next
  End With
End Sub
 
Цитата
Михаил Л написал:
Михаил Pr, в примере покажите что не работает
Переформулирую вопрос.
если я делаю изменение в вашейй формуле, кроме того что должны быть одинаковые количества строк в диапазонах, нужно что-то еще зажимать чтобы не слетала формула в ошибку? или ее можно только записать с нуля?
как быть если нужно формулу протянуть на большее количество строк первого листа?
 
Цитата
Михаил Pr написал:
что-то еще зажимать чтобы не слетала формула в ошибку?
Цитата
vikttur написал:
Формула массива вводится тремя клавишами
Цитата
Михаил Л написал:
Скорее всего, вам надо почитать о  формулах массива
 
Всем откликнувшимся - спасибо за помощь!
Страницы: 1
Наверх