Здравствуйте, пример заполнения таблицы на вкладке ТР приложил. Начал писать макрос. Добился что находит название месяца, не могу не как до думаться как делать чтобы данные копировались согласно месяцу и кол-ву ТР в месяце. Заранее спасибо [vba]
Код
Sub Ren() Dim CompareRange As Variant, x As Variant, y As Variant, month As Variant ' Назначьте переменной CompareRange диапазон, с которым ' нужно сравнить выделенный диапазон. Set CompareRange = Workbooks("Книга 2-1"). _ Worksheets("Освещение").Range("E4:P4") Set month = Workbooks("Книга 2-1"). _ Worksheets("ТР").Range("E2") ' ' В следующем цикле каждая выделенная ячейка сравнивается ' с каждой ячейкой из диапазона CompareRange. For Each x In month For Each y In CompareRange If x = y Then x.Range("P14").Value = x Next y Next x End Sub
[/vba]
Здравствуйте, пример заполнения таблицы на вкладке ТР приложил. Начал писать макрос. Добился что находит название месяца, не могу не как до думаться как делать чтобы данные копировались согласно месяцу и кол-ву ТР в месяце. Заранее спасибо [vba]
Код
Sub Ren() Dim CompareRange As Variant, x As Variant, y As Variant, month As Variant ' Назначьте переменной CompareRange диапазон, с которым ' нужно сравнить выделенный диапазон. Set CompareRange = Workbooks("Книга 2-1"). _ Worksheets("Освещение").Range("E4:P4") Set month = Workbooks("Книга 2-1"). _ Worksheets("ТР").Range("E2") ' ' В следующем цикле каждая выделенная ячейка сравнивается ' с каждой ячейкой из диапазона CompareRange. For Each x In month For Each y In CompareRange If x = y Then x.Range("P14").Value = x Next y Next x End Sub
В модуль листа ТР макрос, который срабатывает при выборе месяца в ячейке Е2 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E2")) Is Nothing Then Application.EnableEvents = False Dim i As Long Dim iLR As Long Dim FoundObject As Range iLR = Cells(Rows.Count, "A").End(xlUp).Row With Worksheets("Кол-во часов") For i = 7 To iLR Set FoundObject = .Columns(2).Find(Cells(i, "A"), , xlValues, xlWhole) If Not FoundObject Is Nothing Then Cells(i, "F") = FoundObject.Offset(, 2) End If Next End With End If Application.EnableEvents = True End Sub
[/vba] Убрать пробел в конце строки Приточная вентиляция с щитом управления П4
В модуль листа ТР макрос, который срабатывает при выборе месяца в ячейке Е2 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E2")) Is Nothing Then Application.EnableEvents = False Dim i As Long Dim iLR As Long Dim FoundObject As Range iLR = Cells(Rows.Count, "A").End(xlUp).Row With Worksheets("Кол-во часов") For i = 7 To iLR Set FoundObject = .Columns(2).Find(Cells(i, "A"), , xlValues, xlWhole) If Not FoundObject Is Nothing Then Cells(i, "F") = FoundObject.Offset(, 2) End If Next End With End If Application.EnableEvents = True End Sub
[/vba] Убрать пробел в конце строки Приточная вентиляция с щитом управления П4Kuzmich
Макрос, как пример подтягивания данных с другого листа, в данном случае количество часов. На листе ТР очистите столбец с количеством часов и выберите какой-либо месяц в ячейке Е2
Макрос, как пример подтягивания данных с другого листа, в данном случае количество часов. На листе ТР очистите столбец с количеством часов и выберите какой-либо месяц в ячейке Е2Kuzmich
Kuzmich, Доброе утро, извените что задаю еще вопрос. Как можно чтобы с вкладке "Освещения" копировалось то наименование механизма согласно которому есть в этот месяц ТР, а если нету ТР то не копировались. Спасибо большое.
Kuzmich, Доброе утро, извените что задаю еще вопрос. Как можно чтобы с вкладке "Освещения" копировалось то наименование механизма согласно которому есть в этот месяц ТР, а если нету ТР то не копировались. Спасибо большое.Makar1986
с вкладки "Освещение" копировалось то наименование механизма согласно которому есть в этот месяц ТР
В модуль листа ТР вставьте следующий код [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E2")) Is Nothing Then Application.EnableEvents = False Dim i As Long Dim iLR As Long Dim iLR_осв As Long Dim FoundMonth As Range iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1 If iLR < 7 Then iLR = 7 Range("A7:A" & iLR).ClearContents 'очищаем столбец А With Worksheets("Освещение") ' ищем столбец с месяцем Set FoundMonth = .Rows(4).Find(Target, , xlValues, xlWhole) If Not FoundMonth Is Nothing Then iLR_осв = .Cells(.Rows.Count, "B").End(xlUp).Row iLR = 7 For i = 8 To iLR_осв 'цикл по столбцу с найденным месяцем If InStr(1, .Cells(i, FoundMonth.Column), "ТР") <> 0 Then Cells(iLR, "A") = .Cells(i, "B") 'оборудование, где есть ТР iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1 End If Next End If End With End If Application.EnableEvents = True End Sub
[/vba] Код срабатывает при изменении месяца в ячейке Е2. Удачи!
Цитата
с вкладки "Освещение" копировалось то наименование механизма согласно которому есть в этот месяц ТР
В модуль листа ТР вставьте следующий код [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E2")) Is Nothing Then Application.EnableEvents = False Dim i As Long Dim iLR As Long Dim iLR_осв As Long Dim FoundMonth As Range iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1 If iLR < 7 Then iLR = 7 Range("A7:A" & iLR).ClearContents 'очищаем столбец А With Worksheets("Освещение") ' ищем столбец с месяцем Set FoundMonth = .Rows(4).Find(Target, , xlValues, xlWhole) If Not FoundMonth Is Nothing Then iLR_осв = .Cells(.Rows.Count, "B").End(xlUp).Row iLR = 7 For i = 8 To iLR_осв 'цикл по столбцу с найденным месяцем If InStr(1, .Cells(i, FoundMonth.Column), "ТР") <> 0 Then Cells(iLR, "A") = .Cells(i, "B") 'оборудование, где есть ТР iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1 End If Next End If End With End If Application.EnableEvents = True End Sub
[/vba] Код срабатывает при изменении месяца в ячейке Е2. Удачи!Kuzmich