Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
помогите СУММПРОИЗВЕД с поиском столбцов
 
В примере всё изложено.    
Как написать формулу, чтобы считало по определённым столбцам которые нужно найти.
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=26.08.2012 02:08}{thema=Re: Re: }{post}{quote}{login=acheslav}{date=26.08.2012 02:05}{thema=Re: }{post}  
 
но ваше изобретение с ThisWorkbook() не даёт мне покоя.  
неужели работает?  
{/post}{/quote}  
 
нет не работает.    
Я думаю общение уже можно перенести в icq, чтоб не раздувать тему. А сюда можно будет потом скинуть результат.  
Александр, я Вас добавил.
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=26.08.2012 01:54}{thema=}{post}>> Кстати макрос ошибся примерно на 12000 чеков в меньшую сторону.  
кстати, интересно. теоретически - не должно быть.    
 
но по выложенной вами картинке и переработанному под себя коду, к сожалению, выводов никаких сделать нельзя.  
это не значит, что я вам не верю, но это значит, что помочь в такой ситуации практически невозможно.  
 
могу лишь предположить, что данные в ваших реальных таблицах более разнообразны. чем в файле-примере; макрос же составлен именно на основе файла-примера.  
 
вот именно для этого вам крайне необходимо самому разобраться "что, как и почему" хотя бы в этом конкретном макросе. имхо.  
 
пс. у меня возникали небольшие сомнения - не будет ли погрешностей в обработке и сравнении в макросе значений времени, представляющих собой, по сути, вещественные числа... но отработавший "на ура" пример эти сомнения развеял. возможно, напрасно.  
 
ппс. а можно я макросы (точнее - рукописный текст) тоже картинками буду выкладывать? вы скажите, не стесняйтесь - вдруг вам так удобнее?{/post}{/quote}  
 
Александр, Ваш макрос работает на ура! Была маленькая ошибочка, которую я поправил. В коде у Вас был and(и), я поправил на or(или)
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=26.08.2012 01:07}{thema=Re: Re: Re: }{post}{quote}{login=}{date=26.08.2012 12:43}{thema=Re: Re: }{post}Попробуете?{/post}{/quote}  
а чего там пробовать? макрос простенький.  
вот если б вы "попробовали" - вот это да! :)  
 
Sub yyy()  
 Dim ws As Worksheet, cDt As Range, cCh As Range, i&, j&  
   
 Set ws = ThisWorkbook.Worksheets(shFromName)  
   
 Set cDt = ws.Rows(2).Find(what:="Дата", lookat:=xlWhole)  
 If cDt Is Nothing Then MsgBox "столбец ""дата"" не найлен", "упс!", 48: Exit Sub  
 Set cCh = ws.Rows(2).Find(what:="Чек", lookat:=xlWhole)  
 If cCh Is Nothing Then MsgBox "столбец ""чек"" не найлен", "упс!", 48: Exit Sub  
   
 j = ws.[a3].End(xlDown).Row
 i = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column + 1  
 ws.Cells(2, i).Value = "ч"  
 ws.Cells(3, i).Resize(j - 2).FormulaR1C1 = "=--and(r[-1]c" & cDt.Column _
   & "<>rc" & cDt.Column & ",r[-1]c" & cCh.Column & "<> rc" & cCh.Column & ")"
End Sub{/post}{/quote}  
 
Я с Вами полностью согласен, пробовать нужно самому. Но к моему сожалению у меня нет такой базы подготовки как у Вас.  
Кстати макрос ошибся примерно на 12000 чеков в меньшую сторону.  
 
И я попробовал ))) не получилось  
 
Private Declare Function GetTickCount Lib "kernel32" () As Long  
 
Const fromBook = "FF_1кл.xls"  
Const toBook = "фф.xls"  
Const shFromName = "FF_1кл" ' имя листа с исходными данными  
Const shToName = "FF_1кл"   ' имя листа, на который будет выводиться результат  
Const cellToAddr = "J3"    ' адрес ячейки на листе shToName, с которой будет выводиться результат  
 
' ВНИМАНИЕ!!! Макрос правильно работает при сортировке исходных данных по столбцам "Дата" и "Чек",  
' именно в таком порядке, по возрастанию!!!  
 
' данные должны быть организованы так, как в примере - "Дата" в столбце A,  
' "Чек" - в столбце C, первая строка с данными - 3, строки таблицы расположены подряд,  
' без пустых строк  
' в случае изменения адресов столбцов и/или первой строки необходимо менять адреса в коде  
 
Sub xxx()  
 Dim wsFr As Worksheet, wsTo As Worksheet, t&  
 Dim arrFr, arrTo, i&, j&, dTime#, lCheck&  
   
 t = GetTickCount  
 Set wsFr = ThisWorkbook(fromBook).Worksheets(shFromName)  
 Set wsTo = ThisWorkbook(toBook).Worksheets(shToName)  
   
 arrFr = wsFr.Range(wsFr.[a3], wsFr.[a3].End(xlDown)).Resize(, 3).Value
 ReDim arrTo(1 To UBound(arrFr), 1 To 2)  
   
 dTime = arrFr(1, 1): lCheck = arrFr(1, 3)  
 j = 1: arrTo(j, 1) = dTime: arrTo(j, 2) = 1  
 For i = 2 To UBound(arrFr)  
   If arrFr(i, 1) = dTime Then  
     If arrFr(i, 3) > lCheck Then  
       lCheck = arrFr(i, 3): arrTo(j, 2) = arrTo(j, 2) + 1  
     End If  
   Else  
     dTime = arrFr(i, 1): lCheck = arrFr(i, 3)  
     j = j + 1: arrTo(j, 1) = dTime: arrTo(j, 2) = 1  
   End If  
 Next  
   
 wsTo.Range(cellToAddr).Resize(j).NumberFormat = "dd/mm/yyyy hh:mm;@"  
 wsTo.Range(cellToAddr).Resize(j, 2).Value = arrTo  
   
 MsgBox "данные обработаны за " & (GetTickCount - t) / 1000 & " сек."  
End Sub
подсчёт значений в сводной таблице
 
"e}{login=ikki}{date=26.08.2012 08:16}{thema=}{post}тот же файл, со сводной таблицей (с "простым" допстолбцом){/post}{/quote}"  
 
Этот вариант тоже работать не хочет, но идея с доп. столбцом хорошая!  
У меня есть идея, у Вас мега мозг.  
 
хотелось бы видеть макрос, который делает дополнительный столбец в конце таблицы и туда вставляет формулы с подсчётом.  
 
Как я понимаю действия макроса должны быть такими:  
1) поиск последнего столбца таблицы с данными  
2) создание столбца в конце таблицы "Кол-во чеков"  
3) поиск столбца "чек"  
4) извлечение данных в последний столбец "Кол-во чеков" с учётом расчёта
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=26.08.2012 07:52}{thema=}{post}макрос. бесплатный :)    
код доступен.  
жмём кнопку - см. лист2.  
 
потестируйте на реальном объеме.{/post}{/quote}  
 
не работает
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=25.08.2012 10:20}{thema=Re: Re: }{post}{quote}{login=Serge 007}{date=25.08.2012 10:12}{thema=Re: }{post}Не буду мешать :-){/post}{/quote}  
мешать можно, жена разрешила :)))  
мне самому интересно - нсть ли решение без допстолбца или более-менее простыми формулами?{/post}{/quote}  
 
Для меня решение этой задачи встало на первое место, жена уже сковородку приготовила.  
Эксель интересная штуковина, за 3 месяца научился делать таблицы о которых даже и не мечтал. Хотел найти книгу, да к сожалению ни где нет. Эффективная работа. Программирование в Office Excel 2003 К.Фрай
подсчёт значений в сводной таблице
 
{quote}{login=Serge 007}{date=25.08.2012 10:12}{thema=Re: }{post}{quote}{login=ikki}{date=25.08.2012 10:00}{thema=}{post}  
если вы согласны на платное решение...{/post}{/quote}  
Не буду мешать :-){/post}{/quote}  
 
Платная основа не лучший вариант для меня. Но всё зависит от суммы.  
Если есть бесплатное решение я только за!
подсчёт значений в сводной таблице
 
{quote}{login=acheslav}{date=25.08.2012 10:11}{thema=Re: }{post}{quote}{login=ikki}{date=25.08.2012 10:00}{thema=}{post}есть вопрос.  
данные в исходной таблице всегда отсортированы по возрастанию даты/времени и номера чека?  
если да - то у меня есть решение для сводной, но с помощью доп.столбца в исх.таблице с ПРОСТОЙ (работающей быстро) формулой.  
если нет - решение тоже есть, тоже с доп.столбцом, но со СЛОЖНОЙ (и для 60000+ строк - тормозной) формулой.  
решения сводной без доп.столбца - не знаю.  
 
тот же вопрос актуален и для других способов (формулами/макросом).  
решение формулами делать не хочу, скорее всего - для такого объема оно будет тормозным (особенно в части формирования списка уникальных значений времени).  
решение макросом (для озвученной в первом посте задачи) могу сделать, но не сегодня (пришла жена, ругается :)  
 
если вы согласны на платное решение макросом с доп.функционалом - со "следующими" таблицами и т.п. - контакты в подписи.  
 
 
какой вариант вам нужен / ближе?{/post}{/quote}  
 
отсортировать можно по датам, это не проблема, так как этот отчёт формирую сам из программы.{/post}{/quote}  
На личный ящик могу отправить полные таблицы, для лучшего понимания.
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=25.08.2012 10:00}{thema=}{post}есть вопрос.  
данные в исходной таблице всегда отсортированы по возрастанию даты/времени и номера чека?  
если да - то у меня есть решение для сводной, но с помощью доп.столбца в исх.таблице с ПРОСТОЙ (работающей быстро) формулой.  
если нет - решение тоже есть, тоже с доп.столбцом, но со СЛОЖНОЙ (и для 60000+ строк - тормозной) формулой.  
решения сводной без доп.столбца - не знаю.  
 
тот же вопрос актуален и для других способов (формулами/макросом).  
решение формулами делать не хочу, скорее всего - для такого объема оно будет тормозным (особенно в части формирования списка уникальных значений времени).  
решение макросом (для озвученной в первом посте задачи) могу сделать, но не сегодня (пришла жена, ругается :)  
 
если вы согласны на платное решение макросом с доп.функционалом - со "следующими" таблицами и т.п. - контакты в подписи.  
 
 
какой вариант вам нужен / ближе?{/post}{/quote}  
 
отсортировать можно по датам, это не проблема, так как этот отчёт формирую сам из программы.
подсчёт значений в сводной таблице
 
{quote}{login=acheslav}{date=25.08.2012 09:40}{thema=Re: }{post}{quote}{login=ikki}{date=25.08.2012 09:18}{thema=}{post}решение именно в форме сводной таблицы - обязательно?  
формулами или макросами подойдёт?{/post}{/quote}  
 
Я думаю да.  
Хотя в сводной более удобно, так как отчёт может содержать в себе до 60000 строк. + ко всему со сводной таблицы данные вытягиваются в следующую.{/post}{/quote}  
 
прикреплённый скриншот  
на этом же листе располагается сводная таблица из которой ведётся подсчёт чеков в ячейку С3 в диапазоне дат ячеек А3 и В3
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=25.08.2012 09:18}{thema=}{post}решение именно в форме сводной таблицы - обязательно?  
формулами или макросами подойдёт?{/post}{/quote}  
 
Я думаю да.  
Хотя в сводной более удобно, так как отчёт может содержать в себе до 60000 строк. + ко всему со сводной таблицы данные вытягиваются в следующую.
подсчёт значений в сводной таблице
 
{quote}{login=acheslav}{date=25.08.2012 09:14}{thema=Re: }{post}{quote}{login=ikki}{date=25.08.2012 09:09}{thema=}{post}видимо, потому что это две записи для двух товаров чека с одним номером (1441191)  
то же и для 0:21 и 0:22  
 
а вот логика подсчета для 0:17 - загадка.  
или ошибка автора.{/post}{/quote}  
 
Да ошибка, я с этой задачей уже долго бьюсь. Решил и Вас помучить )){/post}{/quote}
подсчёт значений в сводной таблице
 
{quote}{login=ikki}{date=25.08.2012 09:09}{thema=}{post}видимо, потому что это две записи для двух товаров чека с одним номером (1441191)  
то же и для 0:21 и 0:22  
 
а вот логика подсчета для 0:17 - загадка.  
или ошибка автора.{/post}{/quote}  
 
Да ошибка, я с этой задачей уже долго бьюсь. Решил и Вас помучить ))
подсчёт значений в сводной таблице
 
{quote}{login=Serge 007}{date=25.08.2012 09:03}{thema=}{post}Почему 01.08.2012  0:16:00 должно быть 1, если было два чека?{/post}{/quote}  
 
Потому что номер чека 1441191.  
В этом то и вся загвоздка. что один чек может содержать в себе группу товаров.
подсчёт значений в сводной таблице
 
Добрый день, золотые умы форума!  
Есть проблема со сводной таблицей.  
Нужно подсчитать количество чеков на определённое время.  
Пример прилагается.
Страницы: 1
Наверх