Страницы: 1
RSS
СУММЕСЛИМН в vba
 
Раньше считал сумму итоговую через СУММЕСЛИМН или через СЧЕТ... но сейчас уже получились объемы (~6000 строк) Стало просто неудобно, может кто подскажет, как это все макросом заменить?    
 
И еще вопрос есть по поиску в больших диапазонах, где надо много раз по одному и тому же столбцу (A) пройтись, причем на 10 листах(лист 1, лист2, лист3...лист10), но по поиску разных значений. Выбрать Петрова, скопировать на лист11 в определенную ячейку, потом Иванова, затем Сидорова и т.д. Есть ли какой-то способ облегчить макрос поиска? Если каждый раз записывать макрос через for each ws и for each r.Row, то это никакого места в коде не хватит...
 
Извиняюсь, забыл прикрепить файл.
 
Макросом можно сделать на массивах. Для этого от вас нужен пример по правилам форума.
Редко но метко ...
 
Забыл сохранить в 2003    
 
На 1 листе, как есть сейчас, а на втором, как было бы здорово получать.
 
А промежуточные итоги не помогут, делается нажатием пару раз на мышку, и макросов городить не надо ? см . файл
Редко но метко ...
 
{quote}{login=GIG_ant}{date=26.10.2011 10:57}{thema=}{post}А промежуточные итоги не помогут, делается нажатием пару раз на мышку, и макросов городить не надо ? см . файл{/post}{/quote}  
 
Это хорошо, но количество позиций по Иванову и т.д. постоянно меняются и их несколько тысяч, поэтому наверно этим способом будет не так удобно. Итоговую сумму считать необходимости нет, так как общие суммы по сейлзам в разных валютах.
 
А сводная не подходит?
 
{quote}{login=Михаил С.}{date=26.10.2011 11:17}{thema=}{post}А сводная не подходит?{/post}{/quote}  
 
Нет, под эту задачу интересен макрос, мне надо суммировать только по одному условию, пока одинаковый элемент в A, то идет суммирование, как только элемент меняется, сумма записывается. Или что-то подобное, сам пытался найти решение, но не смог.
 
"Время работы" макроса не критично, я его запускаю удаленно на сервере, так что работе основной он не помешает. Также интересно, можно ли такую же операцию проделать, при поиске в разных книгах, но сейчас хотя бы на одном листе без поиска по другим.
 
Как много записей на первом листе?
 
{quote}{login=Юрий М}{date=26.10.2011 12:31}{thema=}{post}Как много записей на первом листе?{/post}{/quote}  
 
На первом фиксировано 500.
 
Ещё вопрос: чем в принципе различаются первый и второй листы - только наличием итоговых сумм? Достаточно ли выводить ТОЛЬКО итоговые суммы по фамилиям, или нужна полная картина?
 
{quote}{login=Юрий М}{date=26.10.2011 12:49}{thema=}{post}Ещё вопрос: чем в принципе различаются первый и второй листы - только наличием итоговых сумм? Достаточно ли выводить ТОЛЬКО итоговые суммы по фамилиям, или нужна полная картина?{/post}{/quote}  
 
Во втором листе идут все продажи с начала года, а в первом последние 500 проданных товаров. Да, достаточно просто выводить сумму по каждой фамилии, полная картина в моем отчете не требуется.
 
Чисто что бы услышать что макрос работает чуть не так, а хотелось бы по другому ... )  
см файл. на первом листе кномпочка.
Редко но метко ...
 
{quote}{login=GIG_ant}{date=26.10.2011 01:02}{thema=}{post}Чисто что бы услышать что макрос работает чуть не так, а хотелось бы по другому ... )  
см файл. на первом листе кномпочка.{/post}{/quote}  
 
В примере работает все замечательно! Но вот вопрос в том, зачем нужна ссылка на "лист2" в моем примере он только показывает, как должно быть.
 
Вам нужно что бы итоговые суммы проставлялись прямо на том листе где данные ?
Редко но метко ...
 
{quote}{login=GIG_ant}{date=26.10.2011 01:29}{thema=}{post}Вам нужно что бы итоговые суммы проставлялись прямо на том листе где данные ?{/post}{/quote}  
 
Да, запустил макрос, получил результат, отослал его и очистил значения на листе.
 
{quote}{login=Евгений}{date=26.10.2011 01:16}{thema=Re: }{post}{quote}{login=GIG_ant}{date=26.10.2011 01:02}{thema=}{post}{/post}{/quote}В примере работает все замечательно! Но вот вопрос в том, зачем нужна ссылка на "лист2" в моем примере он только показывает, как должно быть.{/post}{/quote}А сразу нельзя было об этом сказать? Я вот тоже написал итоговые для другого листа...
 
хорошо тогда вопрос, данные у вас всегда отсортированы по первому столбцу ?
Редко но метко ...
 
Забыл файл...
 
Если нужно получить только фамилии и суммы на новом листе, то есть готовый универсальный макрос  
http://www.planetaexcel.ru/forum.php?thread_id=26105  
Можете из него закопипастить данные куда угодно.  
Или другой макрос проверить :)
 
{quote}{login=Юрий М}{date=26.10.2011 01:34}{thema=Re: Re: }А сразу нельзя было об этом сказать? Я вот тоже написал итоговые для другого листа...{/post}{/quote}  
 
Простите, я думал всегда показывают 1 лист как есть, а второй, как хотят получить. Извините. Макрос ваш возьму, наверняка пригодится при формировании будущей отчетности у меня на работе. Спасибо!  
 
{quote}{login=GIG_ant}{date=26.10.2011 01:34}{thema=}{post}хорошо тогда вопрос, данные у вас всегда отсортированы по первому столбцу ?{/post}{/quote}  
 
Да, Антон, всегда отсортированы.
 
Если уж так необходимо - добавьте удаление исходного листа :-)
 
{quote}{login=GIG_ant}{date=26.10.2011 01:34}{thema=}{post}хорошо тогда вопрос, данные у вас всегда отсортированы по первому столбцу ?{/post}{/quote}  
 
Да, всегда все отсортировано
 
{quote}{login=Юрий М}{date=26.10.2011 01:44}{thema=}{post}Если уж так необходимо - добавьте удаление исходного листа :-){/post}{/quote}  
 
Тут дело в том, что мне надо формировать отчет именно на исходном листе(
 
Вот вам на исходном листе, только при условии что данные будут отсортированы по первому столбцу.
Редко но метко ...
 
{quote}{login=GIG_ant}{date=26.10.2011 02:23}{thema=}{post}Вот вам на исходном листе, только при условии что данные будут отсортированы по первому столбцу.{/post}{/quote}  
 
Великолепно! Большое спасибо, пришел с обеда и такая красота! Благодарю!
 
{quote}{login=GIG_ant}{date=26.10.2011 02:23}{thema=}{post}Вот вам на исходном листе, только при условии что данные будут отсортированы по первому столбцу.{/post}{/quote}  
 
Я явно что-то сделал не так на своем примере, у меня первый столбец, суммирую 22 в 23 столбец, попробовал убрать шапку таблицы, но так и не получилось просуммировать...    
 
Sub test()  
   Dim inArr(), outArr(), i As Long, CurrSum As Double  
   inArr = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 21)).Value  
   ReDim outArr(1 To UBound(inArr, 1), 1 To 1)  
   CurrSum = Empty  
   For i = 2 To UBound(inArr, 1)  
       CurrSum = CurrSum + inArr(i - 1, 22)  
       If inArr(i - 1, 1) <> inArr(i, 1) Then  
           outArr(i - 1, 1) = CurrSum  
           CurrSum = Empty  
       End If  
   Next i  
   outArr(i - 1, 1) = CurrSum + inArr(i - 1, 22)  
   Cells(1, 23).Resize(i - 1, 1).Value = outArr  
End Sub
 
желательно давать пример с расположением данных как в оригинале, тогда меньше будет переделывать, пока не увижу пример не смогу вам помочь.
Редко но метко ...
 
{quote}{login=GIG_ant}{date=26.10.2011 03:08}{thema=}{post}желательно давать пример с расположением данных как в оригинале, тогда меньше будет переделывать, пока не увижу пример не смогу вам помочь.{/post}{/quote}  
 
Исправил свои кривые руки и не внимательность. Спасибо, отлично работает!
Страницы: 1
Читают тему
Наверх