Страницы: 1
RSS
Изменение массива в зависимости от заданного значения ячейки, В титульную таблицу нужно подтягивать данные с других листов (таблицы разноформатные)
 
Добрый день!
Подскажите, пожалуйста, как  сделать так, чтобы столбцы D, E,F на вкладке "Итог" обновлялись в зависимости от того, какой месяц написать в D1 (январь/февраль/март, соответствующие листы есть в книге, но таблицы в них отличного от главной таблицы формата).
Спасибо!
 
, формулой можно так...
Код
=СУММПРОИЗВ((ЛЕВСИМВ($A3;ПОИСК(" ";$A3)-1)=ДВССЫЛ($D$1&"!$B$1:$O$1"))*($B3=ДВССЫЛ($D$1&"!$B$2:$O$2"))*(ДВССЫЛ($D$1&"!$A$3:$A$6")=Итог!D$2)*ДВССЫЛ($D$1&"!$B$3:$O$6"))
Не бойтесь совершенства. Вам его не достичь.
 
не думала, что это можно формулой решить..отличный вариант, спасибо!!
 
Andreya Andreya,
Цитата
написал:
не думала, что это можно формулой
можно и не формулой - измените месяц (ДОЛЖЕН БЫТЬ В КНИГЕ)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("D1")) Is Nothing Then
    Dim sh As Worksheet, lr As Long, lcol As Long, i As Long, n As Long, lr2 As Long
    Set sh = Worksheets(Range("D1").Value)
    With sh
    lr = .Cells(Rows.Count, 1).End(xlUp).Row
    lcol = .Cells(1, Columns.Count).End(xlToLeft).Column
    lr2 = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 3 To lr2
    Parf = Cells(i, 1)
    Cod = Cells(i, 2)
        For n = 4 To 6
        Select Case n: Case Is = 4: x = 3: Case Is = 5: x = 4: Case Is = 6: x = 6: End Select ' ВСЕ КАК ЗАВЕЩАЛ ДЖЕК)
            xxx = Mid(Cells(i, 1), 1, InStr(Cells(i, 1), " ") - 1)
            Cells(i, n) = Application.WorksheetFunction.SumIfs(.Range(.Cells(x, 2), .Cells(x, lcol)), _
            .Range(.Cells(2, 2), .Cells(2, lcol)), Cells(i, 2), _
            .Range(.Cells(1, 2), .Cells(1, lcol)), xxx)
        Next n
    Next i
    End With
End If
End Sub
Изменено: Mershik - 05.12.2021 11:02:10
Не бойтесь совершенства. Вам его не достичь.
Страницы: 1
Наверх