Добрый день уважаемые форумчани. Когда-то с Вашей помощью создал таблицу и вот прошу помощи для ее модернизации. В примере упрощенный вариант. Нужно, чтобы на лист статистика добавлялись данные с листа Об-е. А именно дата ремонта т.е. когда какое оборудование пошло в ремонт. Для указания причины сделаю текстбокс (с этим разобрался). На форуме нашел несколько подобных тем, но там макросы переносят данные из одной формы в точно такую-же (или можно на весь год сделать-протянуть и скрыть(тяжелый вариант)). Помогите с макросом который бы искал данные.
Добрый день уважаемые форумчани. Когда-то с Вашей помощью создал таблицу и вот прошу помощи для ее модернизации. В примере упрощенный вариант. Нужно, чтобы на лист статистика добавлялись данные с листа Об-е. А именно дата ремонта т.е. когда какое оборудование пошло в ремонт. Для указания причины сделаю текстбокс (с этим разобрался). На форуме нашел несколько подобных тем, но там макросы переносят данные из одной формы в точно такую-же (или можно на весь год сделать-протянуть и скрыть(тяжелый вариант)). Помогите с макросом который бы искал данные.roman66rus
Udik, немного не так, нужно в статистику переносить только даты ремонта. Например об-е 2 Рем такого-то числа и на тот момент оно отработало столько-то часов. [moder]Переименуйте тему более конкретно в соответствии с п2 Правил форума. Прошу помогающих больше не отвечать до исправления названия темы, ответы буду удалять.[/moder]
Udik, немного не так, нужно в статистику переносить только даты ремонта. Например об-е 2 Рем такого-то числа и на тот момент оно отработало столько-то часов. [moder]Переименуйте тему более конкретно в соответствии с п2 Правил форума. Прошу помогающих больше не отвечать до исправления названия темы, ответы буду удалять.[/moder]roman66rus
Сообщение отредактировал Manyasha - Вторник, 28.06.2016, 18:44
В примере нужно добавить столбец часы, и еще не получается с объединенных ячеек даты брать. А объединенные ячейки использую потому что за сутки у нас 2 смены работает.
В примере нужно добавить столбец часы, и еще не получается с объединенных ячеек даты брать. А объединенные ячейки использую потому что за сутки у нас 2 смены работает.roman66rus
И кто мешает? Палкой его, палкой! По файлу. Если на то, чтобы понять хотелку, нужно более 5 минут, ваши шансы на ответ начинают падать. Когда вы начинаете говорить загадками, ваши шансы начинают падать очень сильно.
И кто мешает? Палкой его, палкой! По файлу. Если на то, чтобы понять хотелку, нужно более 5 минут, ваши шансы на ответ начинают падать. Когда вы начинаете говорить загадками, ваши шансы начинают падать очень сильно.
Прошу прощения, если лист чистый формировался макрос ошибку выкидывал, вот исправленный код[vba]
Код
Sub Макрос1()
Dim strLastRow As Long, gLastRow As Long Dim stlstCol As Integer, L As Date With Sheets("сводка") strLastRow = Cells(Rows.Count, 1).End(xlUp).Row gLastRow = .Cells(Rows.Count, 1).End(xlUp).Row stlLastCol = Cells(1, Columns.Count).End(xlToRight).Column g = gLastRow If g > 2 Then L = .Cells(g, 1) End If For a = 3 To stlLastCol For i = 2 To strLastRow If Cells(i, a) = "рем" Then If L < Cells(1, a) Then g = g + 1 .Cells(g, 1).Value = Cells(1, a).Value .Cells(g, 2).Value = Cells(i, 1).Value .Cells(g, 3).Value = Cells(i, 2).Value .Cells(g, 4).Value = Cells(i, a).Value Else: End If End If Next Next End With Sheets("сводка").Select End Sub
[/vba]
Прошу прощения, если лист чистый формировался макрос ошибку выкидывал, вот исправленный код[vba]
Код
Sub Макрос1()
Dim strLastRow As Long, gLastRow As Long Dim stlstCol As Integer, L As Date With Sheets("сводка") strLastRow = Cells(Rows.Count, 1).End(xlUp).Row gLastRow = .Cells(Rows.Count, 1).End(xlUp).Row stlLastCol = Cells(1, Columns.Count).End(xlToRight).Column g = gLastRow If g > 2 Then L = .Cells(g, 1) End If For a = 3 To stlLastCol For i = 2 To strLastRow If Cells(i, a) = "рем" Then If L < Cells(1, a) Then g = g + 1 .Cells(g, 1).Value = Cells(1, a).Value .Cells(g, 2).Value = Cells(i, 1).Value .Cells(g, 3).Value = Cells(i, 2).Value .Cells(g, 4).Value = Cells(i, a).Value Else: End If End If Next Next End With Sheets("сводка").Select End Sub
roman66rus, потому что cells уже не те. внесла правки в код Kamikadze_N: [vba]
Код
Sub Макрос1() Dim strLastRow As Long, gLastRow As Long Dim stlstCol As Integer, L As Date Dim sh1 As Worksheet Set sh1 = ThisWorkbook.Sheets("Об-е") With Sheets("сводка") strLastRow = sh1.Cells(Rows.Count, 1).End(xlUp).Row gLastRow = .Cells(Rows.Count, 1).End(xlUp).Row stlLastCol = sh1.Cells(1, Columns.Count).End(xlToRight).Column g = gLastRow If g > 2 Then L = .Cells(g, 1) For a = 3 To stlLastCol For i = 2 To strLastRow If sh1.Cells(i, a) = "рем" Then If L < sh1.Cells(1, a) Then g = g + 1 .Cells(g, 1).Value = sh1.Cells(1, a).Value .Cells(g, 2).Value = sh1.Cells(i, 1).Value .Cells(g, 3).Value = sh1.Cells(i, 2).Value Else: End If End If Next Next End With Sheets("сводка").Select End Sub
[/vba]
roman66rus, потому что cells уже не те. внесла правки в код Kamikadze_N: [vba]
Код
Sub Макрос1() Dim strLastRow As Long, gLastRow As Long Dim stlstCol As Integer, L As Date Dim sh1 As Worksheet Set sh1 = ThisWorkbook.Sheets("Об-е") With Sheets("сводка") strLastRow = sh1.Cells(Rows.Count, 1).End(xlUp).Row gLastRow = .Cells(Rows.Count, 1).End(xlUp).Row stlLastCol = sh1.Cells(1, Columns.Count).End(xlToRight).Column g = gLastRow If g > 2 Then L = .Cells(g, 1) For a = 3 To stlLastCol For i = 2 To strLastRow If sh1.Cells(i, a) = "рем" Then If L < sh1.Cells(1, a) Then g = g + 1 .Cells(g, 1).Value = sh1.Cells(1, a).Value .Cells(g, 2).Value = sh1.Cells(i, 1).Value .Cells(g, 3).Value = sh1.Cells(i, 2).Value Else: End If End If Next Next End With Sheets("сводка").Select End Sub
Kamikadze_N, Manyasha, вновь прошу у Вас помощи. Код, что Вы написали ранее работает как и хотелось изначально, т.е. переносит данные на другой лист в последнюю строку. Но в процессе работы выявился недостаток людей которые ежедневно заполняют таблицу, т.е. иногда забывают внести данные. А потом когда вносишь данные за прошедшую дату, код заносит их в последнюю строку, можно ли подправить, чтобы данные за носились по датам, по порядку. Или подскажите какую строку исправить, буду сам пробовать.
Kamikadze_N, Manyasha, вновь прошу у Вас помощи. Код, что Вы написали ранее работает как и хотелось изначально, т.е. переносит данные на другой лист в последнюю строку. Но в процессе работы выявился недостаток людей которые ежедневно заполняют таблицу, т.е. иногда забывают внести данные. А потом когда вносишь данные за прошедшую дату, код заносит их в последнюю строку, можно ли подправить, чтобы данные за носились по датам, по порядку. Или подскажите какую строку исправить, буду сам пробовать.roman66rus