Страницы: 1
RSS
Из массива данных отобразить в отчете данные по конкретному объекту.
 
Добрый день, задача следующая: из массива данных(см.пример) на листе "Прих. объекты" вывести на лист "Отчёт" данные Дата и Сумма в столбец Приход по объекту, и чтоб при смене объекта в выпадающем меню в шапке Отчёта данные соответственно тоже менялись. Заранее спасибо за помощь!
 
Hailvid, Доброго дня :) мульти ВПР

Формулы массива, вводятся сочетанием клавишь ctrl+shift+enter
Столбец А
=ЕСЛИОШИБКА(ИНДЕКС('Прих. объекты'!$A:$A;НАИМЕНЬШИЙ(ЕСЛИ(Отчёт!$G$1='Прих. объекты'!B:B;СТРОКА('Прих. объекты'!B:B);"");СТРОКА()-3));"")
Столбец Б
=ЕСЛИОШИБКА(ИНДЕКС('Прих. объекты'!$D:$D;НАИМЕНЬШИЙ(ЕСЛИ(Отчёт!$G$1='Прих. объекты'!B:B;СТРОКА('Прих. объекты'!B:B);"");СТРОКА()-3));"")


P.S. с диапазонами значений не заморачивался, при больших объёмах будет тормозить, скорее всего формулами есть более быстрее решение.
P.S.S. ну макросом будет ещё быстрее.
Изменено: Wild.Godlike - 31.08.2020 13:41:36
 
Hailvid, еще вариант
формулой:
Код
=ЕСЛИОШИБКА(ИНДЕКС('Прих. объекты'!$A$2:$A$11;АГРЕГАТ(15;6;СТРОКА('Прих. объекты'!$A$1:$A$12)/(Отчёт!$G$1='Прих. объекты'!$B$2:$B$11);СТРОКА()-3);1);"")
макросом:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("G1")) Is Nothing Then
Dim lr As Long, lr2 As Long, i As Long
Dim sh As Worksheet, sh2 As Worksheet
Set sh = Worksheets("Отчёт")
Set sh2 = Worksheets("Прих. объекты")
sh.Range("A4:B100000").ClearContents
lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
    If sh2.Cells(i, 2) = sh.Cells(1, 7) Then
    lr2 = sh.Cells(Rows.Count, 1).End(xlUp).Row
    sh.Cells(lr2 + 1, 1) = sh2.Cells(i, 1)
    sh.Cells(lr2 + 1, 2) = sh2.Cells(i, 4)
    End If
Next i
End If
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Спасибо Джентльмены! Мне есть чему поучиться.
Страницы: 1
Наверх