Страницы: 1
RSS
Сумма данных со всех листов?
 
Нужен макрос, который суммировал бы все данные со всех листов книги. Количество листов постоянно увеличивается и названия их может быть разным.  
Заранее всем спасибо.
 
Макросом не умею, могу предложить формулой  
для В3 =СУММ(Лист2:Лист3!B3)  
 
Новые листы надо будет вставлять между Лист2 и Лист3
 
Спасибо The_Prist, это то, что надо!  
А можно ли как нибудь исключить некоторые листы из диапазона суммирования?
 
{quote}{login=The_Prist}{date=11.01.2010 04:44}{thema=Re: }{post}Можно. Необходимо знать - листы эти меняться будут или же они постоянные?{/post}{/quote}  
Они постоянные и меняться не будут.
 
{quote}{login=The_Prist}{date=11.01.2010 02:05}{thema=}{post}Из примера ни фига не понятно, что значит "все данные со всех листов книги".  
В прилагаемом файле функция пользователя - All_Sum(). Просто указываете диапазон для суммирования на листе. Функция вернет сумму значений всех листов указанного диапазона.{/post}{/quote}  
Дмитрий а можно такую же сделать СУММЕСЛИ() где критерием будет значение столбца А?
 
Вот примерчик к предыдущему посту моему
 
Спасибо пробую приспособить а она какие листы берет до или после свода не разобрался...
 
Спасибо Все классно  пригодится.  
Теперь еще такую же бы СУММ(ИНДЕКС(ПОИСКПОЗ();ПОИСКПОЗ()) чтобы суммировала нужные столбцы и строки с одинаковыми названиями на всех листах , но это уже прихоть.  
Только один момент при вставке нового листа она не персчитывает по моему надо формулу вводить по новой, а если их много (формул). Нельзя ее автоматизировать.
 
Вставил #Знач полезло всюду.  
Function All_SumIf(rRange As Range, rCriteria As Range, rSumRange As Range)  
  Application.Valatile  
   Dim wsSh As Worksheet, sRange As String, sSumRange As String  
   sRange = Right(rRange.Address, Len(rRange.Address) - InStr(rRange.Address, "!"))  
   sSumRange = Right(rSumRange.Address, Len(rSumRange.Address) - InStr(rSumRange.Address, "!"))  
   For Each wsSh In Sheets  
       If wsSh.Name <> Application.Caller.Parent.Name Then  
       All_SumIf = All_SumIf + Application.SumIf(wsSh.Range(sRange), rCriteria, wsSh.Range(sSumRange))  
       End If  
   Next wsSh  
End Function
 
Спс так все ОК.
 
{quote}{login=The_Prist}{date=12.01.2010 04:32}{thema=}{post}Ловите. Аналог СУММЕСЛИ, только суммирует значения со всех листов.  
=All_Sumif($A$3:$A$6;$A3;B$3:B$6){/post}{/quote}  
подскажите пожалуста,если меняются значения в суммируемом диапазоне то функция не пересчитывает их автоматически. как можно сделать так чтобы пересчёт шёл автоматически?
Страницы: 1
Читают тему
Наверх