Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Суммировать c нескольких листов с условиями
 
Всем привет.
продскажите пожалуйста, как "завернуть" суммесли, что бы работало с несколькими листами ?
количество листов может менятся. названия от 1 до 31 (колво дней.)
 
Как просуммировать данные с нескольких листов, в том числе по условию
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
мне
Пробовал, не хочет работать..
в моем примере мне нужно немного по другому, искать не в строках а в колонках совпадения, и колонки могуд быть в разном порядке(но всегда в одном и том же диапазоне)
 
Цитата
Евгений Квитницкий написал:
в моем примере мне нужно
так и покажите в этом примере КАК нужно. Сейчас пример вообще ни о чем. Итоговый лист пуст и что там хотите получить и по каким критериям суммировать совершенно непонятно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий Щербаков написал:
так и покажите в этом примере КАК нужно
как то так
 
Код
Function All_SumIf(rRange As Range, rCriteria As Range, rSumRange As Range, Optional sSheets = "")
    Dim wsSh As Worksheet, sRange As String, sSumRange As String, asSheets, li As Long
    Dim lcol
    
    sRange = Right(rRange.Address, Len(rRange.Address) - InStr(rRange.Address, "!"))
    sSumRange = Right(rSumRange.Address, Len(rSumRange.Address) - InStr(rSumRange.Address, "!"))
    If sSheets = "" Then
        For Each wsSh In Worksheets
            If wsSh.Name <> Application.Caller.Parent.Name Then
                sSheets = sSheets & "?" & wsSh.Name
            End If
        Next wsSh
        sSheets = Mid$(sSheets, 2)
    End If
    asSheets = Split(sSheets, "?")
    For li = LBound(asSheets) To UBound(asSheets)
        Set wsSh = Sheets(asSheets(li))
        If Not wsSh Is Nothing Then
            lcol = 0
            lcol = Application.Match(rCriteria, wsSh.Range(sRange), 0)
            If IsError(lcol) Then lcol = 0
            If lcol > 0 Then
                All_SumIf = All_SumIf + Application.Sum(wsSh.Range(sSumRange).Columns(lcol))
            End If
        End If
    Next li
End Function
в ячейку записываем так:
=All_SumIf($A$2:$E$2;total!A$2;total!$A:$E)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Евгений Квитницкий, как вариант с доп столбцом с наименованиями  листов
 
Цитата
Дмитрий Щербаков написал:
Дмитрий Щербаков
Спасибо.
Страницы: 1
Читают тему (гостей: 1)
Наверх