Страницы: 1
RSS
Продажи в диапазоне дат
 
Здравствуйте! Не буду оригинален - прошу помощи! У меня есть Главная Таблица, в которой указаны даты продаж различного товара, в различном количестве и цене. В том же листе есть две именованных ячейки (ДатаНач и ДатаКон), в первую из которых вводится дата начала диапазона, во второй - дата его окончания. Нужно, чтобы Эксель распознал диапазон по ближайшим датам существующих продаж из Главной Таблицы (допустим, введено 10.01.2011, а в таблице такой даты нет, тогда эксель берет ближайшую, следующую после нее дату; если окончание введенного диапазона не совпало с табличным, тогда эксель берет из Таблицы ближайшую дату до введенного значения), и посчитал сумму продаж товаров, всего за период.
 
Что значит "ближайшую? В какую сторону? Обычно в отчёт должны попадать только даты, попадающие в заданный диапазон.
 
Формула массива.  
 
=SUM((G3:G7>=ДатаНач)*(G3:G7<=ДатаКон)*K3:K7)
There is no knowledge that is not power
 
Юрий, я там написал, что диапазон подсчета табличных данных не должен выходить за границы введенных вручную дат, т.е. сумма продаж товаров должна подсчитываться, начиная с даты, введенной вручную/в ближайшую после нее дату, а заканчиваться по введенную дату окончания, включительно. Спасибо!
 
Без массива  
=СУММПРОИЗВ(K3:K7;(G3:G7>=ДатаНач)*(G3:G7<=ДатаКон))
 
Джонни, Казанский, спасибо громадное! А можно ли еще дополнительно выводить наименование товаров, проданных в этот период, как вы думаете?
 
Покажите, как именно Вы хотите выводить наименование товаров: в одну ячейку (через запятую) или в несколько соседних, с удалением повторяющихся или нет, с сортировкой по алфавиту или нет...
 
Может, просто условным форматированием подкрасить:
 
66166
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Казанский}{date=03.05.2011 12:06}{thema=}{post}Может, просто условным форматированием подкрасить:{/post}{/quote}  
 
Условным форматированием не получится - в идеале у меня таблица и сводка на разных листах (здесь упрощенная форма данных). Перечень было бы здорово выводить здесь же, сразу под итоговой суммой продаж за период, вниз по вертикали (сумму продаж по ним я ВПРом потом сам смогу сделать). Спасибо!
 
Макрос устроит?
 
Как-то так.
There is no knowledge that is not power
 
{quote}{login=Владимир}{date=03.05.2011 12:08}{thema=}{post}66166{/post}{/quote}  
 
Владимир, спасибо! Сам виноват - не уточнил... В идеале хотелось бы, чтобы проданный товар выводился уникальными наименованиями. То есть два одинаковых товара, проданных в одном периоде, выводились лишь однажды, одним указанием. То есть просто перечень уникальных позиций, проданных в этом периоде. Такое возможно?
 
{quote}{login=Юрий М}{date=03.05.2011 12:15}{thema=}{post}Макрос устроит?{/post}{/quote}  
 
Буду весьма признателен за любую форму решения этой проблемы!
 
А может сводной таблицей?  
Быстро (может работать с большим массивом данных без особых тормозов); гибко (легко настроить практически любой отчет).  
Из недостатков: нужно обновлять получаемую таблицу вручную, при изменени исходных данных; возможно потребуется изменение структуры или внесение дополнительных вычисляемых полей.
 
{quote}{login=Григорий}{date=03.05.2011 12:17}{thema=Re: }{post}{quote}{login=Владимир}{date=03.05.2011 12:08}{thema=}{post}66166{/post}{/quote}хотелось бы, чтобы проданный товар выводился уникальными наименованиями. То есть два одинаковых товара, проданных в одном периоде, выводились лишь однажды, одним указанием. То есть просто перечень уникальных позиций, проданных в этом периоде. Такое возможно?{/post}{/quote}  
Так и даты продаж (построчно) тоже не выводить в отчёт?
 
{quote}{login=Юрий М}{date=03.05.2011 12:57}{thema=Re: Re: }{post}{quote}{login=Григорий}{date=03.05.2011 12:17}{thema=Re: }{post}{quote}{login=Владимир}{date=03.05.2011 12:08}{thema=}{post}66166{/post}{/quote}хотелось бы, чтобы проданный товар выводился уникальными наименованиями. То есть два одинаковых товара, проданных в одном периоде, выводились лишь однажды, одним указанием. То есть просто перечень уникальных позиций, проданных в этом периоде. Такое возможно?{/post}{/quote}  
Так и даты продаж (построчно) тоже не выводить в отчёт?{/post}{/quote}  
 
Нет, даты продаж не нужны - здесь цель понять, что и на какую сумму было продано внутри выбранного периода времени. То есть с суммой мы разобрались, а вот еще бы с перечнем товаров, который формировался бы списком уникальных позиций...
 
Немного перемудрил, но работает :-) Проверьте: меняем даты начала или окончания периода отчёта. Проверку на то, что в ячейке ДЕЙСТВИТЕЛЬНО дата - не делал.
 
{quote}{login=Юрий М}{date=03.05.2011 01:40}{thema=}{post}Немного перемудрил, но работает :-) Проверьте: меняем даты начала или окончания периода отчёта. Проверку на то, что в ячейке ДЕЙСТВИТЕЛЬНО дата - не делал.{/post}{/quote}  
 
Я прошу прощения... Но не работает ((
 
{quote}{login=Юрий М}{date=03.05.2011 01:40}{thema=}{post}Немного перемудрил, но работает :-) Проверьте: меняем даты начала или окончания периода отчёта. Проверку на то, что в ячейке ДЕЙСТВИТЕЛЬНО дата - не делал.{/post}{/quote}  
 
Работает! Просто надо дату обновлять для этого! Ура! Спасибо громадное! Это большая работа, я искренне Вам признателен! Снимаю шляпу!
 
А я ведь "предупреждал": - "меняем даты начала или окончания периода отчёта" :-)
 
{quote}{login=Юрий М}{date=03.05.2011 02:00}{thema=Re: Re: }{post}А я ведь "предупреждал": - "меняем даты начала или окончания периода отчёта" :-){/post}{/quote}  
 
Юрий, ну Вы же знаете - среднестатистический индивидуум инструкцию по использованию всегда читает после того, как включит телевизор в розетку )) Спасибо большущее Вам!
 
как вариант для спортивного интереса :)  
Sub Grigory2()  
'R Dmitry  
Dim cn As ADODB.Connection, rs As ADODB.Recordset, lr&  
Set cn = New ADODB.Connection  
Set rs = New ADODB.Recordset  
 cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName _  
& ";Extended Properties=""Excel 8.0;HDR=No"";"  
If Not cn.State = 1 Then Exit Sub  
With Worksheets("Главная")  
lr = .Cells(.Rows.Count, 1).End(xlUp).Row  
End With  
strSql = "SELECT DISTINCTROW F2, Sum(F4) AS [Кол-во], Sum(F5) AS [Сумма]" _
& " FROM [Главная$g3:k" & lr & "] T " _
& " WHERE (((F1) >= #" & Format(Range("ДатаНач"), "mm\/dd\/yy hh\:mm\:ss") & "# And (F1) <= #" & Format(Range("ДатаКон"), "mm\/dd\/yy hh\:mm\:ss") & "#))" _  
& " GROUP BY F2;"  
rs.Open strSql, cn, adOpenStatic, adLockReadOnly  
With Worksheets("Отчет")  
.Range("a3:c" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents  
.Cells(1, 1) = "Продано за период с " & Range("ДатаНач") & " по " & Range("ДатаКон")  
.Cells(3, 1).CopyFromRecordset rs  
rs.Close: cn.Close  
Set cn = Nothing: Set rs = Nothing  
End With  
End Sub
Спасибо
 
забыл добавить, библиотека ADO должна быть включена
Спасибо
Страницы: 1
Читают тему
Наверх