Доброго времени. Суть (файл прикреплен) Есть лист "Ввод данных" В каждой строчке есть столбец "Водитель" Нужно перенести в лист "Маршрутный лист" только те строчки, которые относятся к конкретному водителю (он выбран в ячейке G3 на листе "Маршрутный лист")
Огромное спасибо за помощь!
Доброго времени. Суть (файл прикреплен) Есть лист "Ввод данных" В каждой строчке есть столбец "Водитель" Нужно перенести в лист "Маршрутный лист" только те строчки, которые относятся к конкретному водителю (он выбран в ячейке G3 на листе "Маршрутный лист")
Помогите пожалуйста, У меня похожая проблема, только мне нужно переносить данные по двум критериям Например за весь февраль по конкретному водителю (или номеру машины)
Помогите пожалуйста, У меня похожая проблема, только мне нужно переносить данные по двум критериям Например за весь февраль по конкретному водителю (или номеру машины)MBuh
Можешь описать смысл макроса.. не понимаю как он работает а мне надо чуть его изменить )))
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False: Application.DisplayAlerts = False a = Target.Address If Target.Address = "$G$3" Then s = 5 With Sheets("Ââîä äàííûõ") Range("A5:I30").ClearContents For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row If .Cells(i, 13) = Target Then Cells(s, 1) = s - 4 Cells(s, 2) = .Cells(i, 2) Cells(s, 3) = .Cells(i, 3) Cells(s, 4) = .Cells(i, 4) Cells(s, 5) = .Cells(i, 5) Cells(s, 6) = .Cells(i, 6) Cells(s, 7) = .Cells(i, 7) Cells(s, 8) = .Cells(i, 8) s = s + 1 End If Next End With End If Application.ScreenUpdating = True: Application.EnableEvents = True: Application.DisplayAlerts = True End Sub
[/vba] [moder]Коды следует оформлять тегами (кнопка #). На первый раз исправила[/moder]
Wasilic
Можешь описать смысл макроса.. не понимаю как он работает а мне надо чуть его изменить )))
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False: Application.DisplayAlerts = False a = Target.Address If Target.Address = "$G$3" Then s = 5 With Sheets("Ââîä äàííûõ") Range("A5:I30").ClearContents For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row If .Cells(i, 13) = Target Then Cells(s, 1) = s - 4 Cells(s, 2) = .Cells(i, 2) Cells(s, 3) = .Cells(i, 3) Cells(s, 4) = .Cells(i, 4) Cells(s, 5) = .Cells(i, 5) Cells(s, 6) = .Cells(i, 6) Cells(s, 7) = .Cells(i, 7) Cells(s, 8) = .Cells(i, 8) s = s + 1 End If Next End With End If Application.ScreenUpdating = True: Application.EnableEvents = True: Application.DisplayAlerts = True End Sub
[/vba] [moder]Коды следует оформлять тегами (кнопка #). На первый раз исправила[/moder]korostelev_n
Сообщение отредактировал Pelena - Воскресенье, 21.02.2016, 15:05
не понимаю как он работает а мне надо чуть его изменить
Что конкретно? Комментирую: (не нужное удалил) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False: Application.EnableEvents = False 'На врема работы макроса оключаем экран и макрос от повторного срабатывания If Target.Address = "$G$3" Then 'если изменение произошло в G3 то исполняем макрос s = 5 '1-я строка записи на листе "Маршрутный лист" With Sheets("Ввод данных") 'все действия отмеченные точкой относятся к этому листу, остальные к активному Range("A5:I30").ClearContents 'чистим активную таблицу "Маршрутный лист" For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row 'цикл проверки со 2-й до последней строки лмста "Ввод данных" If .Cells(i, 13) = Target Then 'если строка цикла i и колонка 13(F) = G3, переписываем Cells(s, 1) = s - 4 ' № п.п Cells(s, 2) = .Cells(i, 2) 'в строку s колонку 2 активного листа из строки i колонки 2 листа "Ввод данных" Cells(s, 3) = .Cells(i, 3) 'и так далее Cells(s, 4) = .Cells(i, 4) Cells(s, 5) = .Cells(i, 5) Cells(s, 6) = .Cells(i, 6) Cells(s, 7) = .Cells(i, 7) Cells(s, 8) = .Cells(i, 8) s = s + 1 End If Next End With End If 'включаем экран и макрос Application.ScreenUpdating = True: Application.EnableEvents = True End Sub
не понимаю как он работает а мне надо чуть его изменить
Что конкретно? Комментирую: (не нужное удалил) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False: Application.EnableEvents = False 'На врема работы макроса оключаем экран и макрос от повторного срабатывания If Target.Address = "$G$3" Then 'если изменение произошло в G3 то исполняем макрос s = 5 '1-я строка записи на листе "Маршрутный лист" With Sheets("Ввод данных") 'все действия отмеченные точкой относятся к этому листу, остальные к активному Range("A5:I30").ClearContents 'чистим активную таблицу "Маршрутный лист" For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row 'цикл проверки со 2-й до последней строки лмста "Ввод данных" If .Cells(i, 13) = Target Then 'если строка цикла i и колонка 13(F) = G3, переписываем Cells(s, 1) = s - 4 ' № п.п Cells(s, 2) = .Cells(i, 2) 'в строку s колонку 2 активного листа из строки i колонки 2 листа "Ввод данных" Cells(s, 3) = .Cells(i, 3) 'и так далее Cells(s, 4) = .Cells(i, 4) Cells(s, 5) = .Cells(i, 5) Cells(s, 6) = .Cells(i, 6) Cells(s, 7) = .Cells(i, 7) Cells(s, 8) = .Cells(i, 8) s = s + 1 End If Next End With End If 'включаем экран и макрос Application.ScreenUpdating = True: Application.EnableEvents = True End Sub
китин, А если два критерия ? Например дата [moder]Значит, надо добавить ещё одно условие в функцию ЕСЛИ. Если не разобрались, создавайте новую тему по Правилам форума[/moder]
китин, А если два критерия ? Например дата [moder]Значит, надо добавить ещё одно условие в функцию ЕСЛИ. Если не разобрались, создавайте новую тему по Правилам форума[/moder]MBuh
Сообщение отредактировал Pelena - Воскресенье, 21.02.2016, 18:24
Если с листа "Ввода данных" нужно перенести не все данные, а только по столбцам (например) B, F, G, H (критерии остаются те же - дата и водитель), что нужно изменить в формуле? [moder]Ещё раз: читаем Правила форума, создаём свою тему[/moder]
Спасибо, Формулу изменила, добавила еще одно условие
Если с листа "Ввода данных" нужно перенести не все данные, а только по столбцам (например) B, F, G, H (критерии остаются те же - дата и водитель), что нужно изменить в формуле? [moder]Ещё раз: читаем Правила форума, создаём свою тему[/moder]MBuh
Сообщение отредактировал Pelena - Воскресенье, 21.02.2016, 22:33