Страницы: 1 2 След.
RSS
суммирование значений на текущий день прошлого месяца
 
Доброго дня всем. Есть файлик, в котором ведется подсчет входящих клиентов, звонков, контрактов и т.п. и в нем есть сводная таблица, которая подсчитывает значения за текущий месяц. В эту таблицу нужно добавить столбец, который подсчитывал бы значения на сегодняшнее число предыдущего месяца. Пока получилось только подсчитать общую сумму за прошлый месяц :) помогите реализовать, пожалуйста.  
 
Здрасьте. :)
А в примере где у вас что получилось? Например, сумму за прошлый месяц? Там пока есть таблица и совершенно непонятно, в какие ячейки какие данные нужно выводить.

p.s. аааа, я, кажись, догадался.
Я бы, правда, вместо СУММПРОИЗВ() применял бы СУММЕСЛИМН()
В принципе, у Вас там правильно все, чего не устраивает-то?
Изменено: Пытливый - 24.06.2015 17:12:07
Кому решение нужно - тот пример и рисует.
 
Из примера и объяснений как-то не очень очевидно что нужно.
Вот эта формула =ДАТАМЕС(СЕГОДНЯ();-1) возвращает сегодняшнее число предыдущего месяца. Может поможет чем.
ИМХО. Данные реорганизовать правильно и применять Сводные таблицы
Согласие есть продукт при полном непротивлении сторон
 
 Мой вариант.
 
Цитата
Пытливый написал: В принципе, у Вас там правильно все, чего не устраивает-то?
Я догадывался, что путанно объясняю. После напряженного рабочего дня и ковыряния таблицы не смог сформулировать, простите.
В правой части таблицы, залитой светло-зеленым цветом, подсчитывается накопительный итог текущего месяца. а в части, залитой серо-голубым, хотелось бы видеть сумму на сегодняшнюю дату, но на прошлый месяц. То есть, там ща 65 - это за весь май посчитано. А сегодня 24е июня, и я хочу видеть, сколько было звонков или контрактов или входящих клиентов на 24 мая,  ну и так далее.
Цитата
Sanja написал: ДАТАМЕС(СЕГОДНЯ();-1)
попробую завтра поковырять... а сводные таблицы - это надо еще изучить, что это и для чего :) я надеялся обойтись малой кровью - не основное это у меня, я руководитель отдела продаж :)

спасибо за попытки помочь и простите еще раз за невнятную формулировку :)
Изменено: skapustin - 24.06.2015 21:57:14
 
Мне кажется, что надо что-то типа:
Код
=СУММЕСЛИМН(C3:C368;A3:A368;ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;СЕГОДНЯ()))

Т.е. мы суммируем все значения из столбца "Звонки_Нк", у которых в столбце А дата относительно сегодня отстоит на один месяц назад.
Для остальных колонок надо менять стобец С на другие.
Изменено: Пытливый - 24.06.2015 22:17:10
Кому решение нужно - тот пример и рисует.
 
хм, в результате выдает ноль..
 
ну так какое значение на 24.05 по данной позиции в столбце С?
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый написал: какое значение на 24.05
53 с 1 по 24 мая. я даже на 24 значение вписал на всякий, там пусто было.
 
Не-не-не... в исходном файле в столбце С на 24.05.15 стоит 0. И в запросе было, если я не ошибаюсь:
Цитата
skapustin написал:
нужно добавить столбец, который подсчитывал бы значения на сегодняшнее число предыдущего месяца

З.Ы. ТОЧНО!
Во как надо!
Код
=СУММЕСЛИМН(C3:C368;A3:A368;"=" & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;ДЕНЬ(СЕГОДНЯ())))

забыл преобразовать сегодня () в день месяца.
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый написал:
Не-не-не... в исходном файле в столбце С на 24.05.15 стоит 0. И в запросе было, если я не ошибаюсь:
ну я на 24 поставил значение, все равно ноль.  надо сумму с 1 по текущее число предыдущего месяца...
в этой формуле снова ноль :(
Изменено: skapustin - 24.06.2015 22:52:06
 
Пытливый, автору нужна сумма с 1 по 24 мая
 
Ну, если надо с 1 числа по текущее число прошлого месяца, то можно добавить еще одно условие. Недаром там суммеслиМН() ! :)
Код
=СУММЕСЛИМН(C3:C368;A3:A368;"<=" & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;ДЕНЬ(СЕГОДНЯ()));A3:A368;">=" & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;1))
Изменено: Пытливый - 24.06.2015 23:04:05
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый написал: =СУММЕСЛИМН(C3:C368;A3:A368;" " & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;1))
Урааа :) заработало. Но косячит на единицу пока. по факт 51 а формула 50 кажет. Проверю теперь позже.
 
за первое число не считает
 
Может такая подойдет?
Код
=СУММПРОИЗВ((МЕСЯЦ($A$3:$A$368)=МЕСЯЦ(ДАТАМЕС(СЕГОДНЯ();-1)))*($A$3:$A$368<ДАТАМЕС(СЕГОДНЯ();-1))*(C3:C368))
Можно вместо (-1) написать адрес ячейки, в которой писать сколько месяцев назад нужны данные.
 
Конечно же, эта формула сработала, а не та, что я процитировал выше...
и это она не считает за первое число.
Спать пора :) а я на работе сижу.
Код
=СУММЕСЛИМН(C3:C368;A3:A368;"<=" & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;ДЕНЬ(СЕГОДНЯ()));A3:A368;">=" & ДАТА(2015;МЕСЯЦ(СЕГОДНЯ())-1;1))
 
Формула из #14 должна, по идее, все значения подхватывать с первого числа, по текущее. Проверяйте.
Кому решение нужно - тот пример и рисует.
 
из 14го наоборот, ТОЛЬКО за 1 считает
 
А макросом не пробовали подсчитать?
 
Тьфу, из #13 конечно.
Спать.
Ибо немедленно.
Кому решение нужно - тот пример и рисует.
 
Цитата
Kuzmich написал: А макросом не пробовали подсчитать?
Хотелось бы без макросов обойтись, вроде не сложно. у кого-то макросы включены, у кого-то выключены, вроде всем объясняешь, а потом звонят и кричат - нифига твоя таблица не работает. поэтому - чем проще, тем лучше :)
 
Цитата
поэтому - чем проще, тем лучше
Я, как увидел ваши формулы, то мне худо стало. А вот макрос в модуль листа1, попробуйте
для двух сумм на сегодняшний день и прошлого месяца.
Код
Sub Pereschet()
Dim Segodnja As Date                'сегодняшняя дата
Dim FirstDaySegodnja As Date        'дата первого дня текущ.месяца
Dim FoundSegodnja As Range
Dim FoundFirstDaySegodnja As Range
Dim FirstDayPrevMonth As Date       'дата первого дня пред.месяца
Dim PrevMonth As Date               'дата месяц назад
Dim FoundPrevMonth As Range
Dim FoundFirstDayPrevMonth As Range
    Segodnja = Date
    FirstDaySegodnja = DateSerial(Year(Segodnja), Month(Segodnja), 1)
    PrevMonth = DateSerial(Year(Segodnja), Month(Segodnja) - 1, Day(Segodnja))
    FirstDayPrevMonth = DateSerial(Year(PrevMonth), Month(PrevMonth), 1)
       Set FoundSegodnja = Columns(1).Find(Segodnja, , xlFormulas, xlWhole)
       Set FoundFirstDaySegodnja = Columns(1).Find(FirstDaySegodnja, , xlFormulas, xlWhole)
       Set FoundPrevMonth = Columns(1).Find(PrevMonth, , xlFormulas, xlWhole)
       Set FoundFirstDayPrevMonth = Columns(1).Find(FirstDayPrevMonth, , xlFormulas, xlWhole)
      Range("BE1") = WorksheetFunction.Sum(Range(Cells(FoundFirstDaySegodnja.Row, 3), _
                                Cells(FoundSegodnja.Row, 3)))      'за текущий месяц
      Range("BL1") = WorksheetFunction.Sum(Range(Cells(FoundFirstDayPrevMonth.Row, 3), _
                                Cells(FoundPrevMonth.Row, 3)))      'за пред. месяц
End Sub
 
Цитата
Kuzmich написал: Я, как увидел ваши формулы, то мне худо стало
:D я макросы люблю, но вот так сходу написать - это не для меня. я буду долго искать похожие задачи по форумам и сковыривать по строчке в свой макрос, который, скорее всего, получится неоптимальным.
Почему я тут без макросов хотел, я выше писал уже. Но т.к. интересно, я попробовал макрос ваш. Только выдал он ошибку, и в таких случаях макросы меня расстраивают, т.к. тут я уж совсем не знаю, что делать.
Изменено: skapustin - 25.06.2015 12:12:42
 
Цитата
Только выдал он ошибку
Уберите формулу для даты в столбце А. В ячейку А3 вручную вставьте дату 01.01.2015 и протяните вниз до конца года.
А потом попробуйте запустить макрос.
 
Цитата
Kuzmich написал: Уберите формулу для даты в столбце А
сейчас, чтобы начать эту таблицу для нового года, достаточно в А1 написать 01/16 и даты заполнятся на 2016 год. Хотя, конечно, еще надо содержимое таблицы  очищать, так что, если все же мы перешли в макросы, то и эта беда - не беда :D
Если просто вставить даты, то работает. Но надо, чтобы макрос выполнялся после любого изменения любой ячейки. Я когда-то находил код для этого. Если не сложно, подскажите, пожалуйста, как сделать. Если сложно - поищу сам :)
 
Цитата
Пытливый написал: из #13 конечно.
Сегодня заработало :) вчера я возился-возился и эксель скрашился, ну я и решил, что это знак домой идти. сегодня попробовал - работает :) спасибо.
 
Цитата
skapustin написал: надо, чтобы макрос выполнялся после любого изменения любой ячейки
Вы знаете, сколько ячеек на листе? )) Может быть всё же есть смысл ограничить контролируемый диапазон?
Смотрите в сторону события листа Worksheet_Change.
 
Цитата
Юрий М написал: Вы знаете, сколько ячеек на листе
))) конечно, я имел в виду контроллируемый диапазон. макрос нашел, вставил - работает. нашел на этом же форуме. вот такой
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("I3:BD370")) Is Nothing Then
Call Pereschet
End If
End Sub
 
Я бы ещё добавил отключение событий, чтобы Ваш макрос не срабатывал "не по делу".
Страницы: 1 2 След.
Читают тему
Наверх