Страницы: 1
RSS
График техобслуживания кранов, сбор в один лист даты проведения ПТО ЧТО кранов по выбранному периоду
 
Есть график ПТО, ЧТО кранов в цехах, 14 листов (название листа - это цех), необходимо, установить в листе "ОБЩ" выбор  периода, и таблицу с графами (цех, название, рег№, полное, частичное) как на примере. Надо, чтобы при выборе периода в листе "ОБЩ" собиралась информация как показано в примере. Учесть, что количество кранов в листах может меняться.
 
ПТО.. ЧТО?
Здесь все должны знать?
 
Еще хорошо бы уточнить - формулами/макросом результат хочется?
Кому решение нужно - тот пример и рисует.
 
желательно формулы

ПТО - полное техническое освидетельствование
ЧТО - частичное техническое освидетельствование
 
Сможете помочь?
 
Цитата
Аслан написал: Сможете помочь?
См. надстройка PLEX - Диапазоны - Собрать - с наименованиями листов. Далее - фильтр. Как вариант... ;)
ps Могут быть другие варианты - от версии XL зависит, не только формулами.
pps Данные на листах надо "причесать/почистить", оформить списками/таблицами или дать им имена.
Изменено: Z - 29.12.2016 09:44:03
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z, если честно я не знаю как работать с PLEX. Экзель 2010.
 
Уточните пожалуйста, по каким критериям должна происходить выборка, по дате ПТО, ЧТО?  Если да то что делать с теми у которых нет даты. У вас в файле примера есть кран который не попадает под выбранный диапазон дат.  
Изменено: BotExcel - 29.12.2016 10:02:26
 
Да по дате, ПТО - полное, ЧТО - частичное, если нет даты их не нужно показывать в листе "ОБЩ".
 
Цитата
желательно формулы
Не, я формулами не умею.
Вот проверьте макрос в модуль листа ОБЩ, срабатывает при изменении диапазона дат.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("B1:D1")) Is Nothing Then
     Application.EnableEvents = False
Dim Sht As Worksheet
Dim iLastRow As Integer
Dim i As Integer
Dim iLR As Integer
  iLR = Cells(Rows.Count, 1).End(xlUp).Row + 1
  Range("A4:E" & iLR).Clear
   iLR = Cells(Rows.Count, 1).End(xlUp).Row + 1
    For Each Sht In Worksheets
      If Sht.Name <> "ОБЩ" Then
        With Sht
          iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
          For i = 2 To iLastRow
           If IsDate(.Cells(i, "D")) Then
             If .Cells(i, "D") >= Range("B1") And .Cells(i, "D") <= Range("D1") Then
               .Range("B" & i & ":D" & i).Copy Cells(iLR, "B")
                 Cells(iLR, 1) = Sht.Name
               iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1
             End If
           End If
           If IsDate(.Cells(i, "E")) Then
             If .Cells(i, "E") >= Range("B1") And .Cells(i, "E") <= Range("D1") Then
               .Range("B" & i & ":C" & i).Copy Cells(iLR, "B")
               .Range("E" & i).Copy Cells(iLR, "E")
                 Cells(iLR, 1) = Sht.Name
               iLR = Cells(Rows.Count, "A").End(xlUp).Row + 1
             End If
           End If
          Next
        End With
      End If
    Next
  End If
    Application.EnableEvents = True
End Sub
 
Kuzmich, большое СПАСИБО!!! работает!
 
Надо бы еще предусмотреть, чтобы дата начала периода была меньше даты окончания.
Страницы: 1
Читают тему
Наверх