Страницы: 1
RSS
При выборе исполнения выводить все входящие в это исполнение чертежи комплектующих
 
Добрый день.
Из чертежа сохраняю спецификацию в  файле эксель. В файле на примере желтым указанно в каких строках искать, желательно чтобы поиск этот строк был привязан к фразе "Обозн. исполн." Нужна таблица, в которой в зеленое поле вводится номер исполнения, а в столбцах чертеж ,наименование, и количество  выводилось бы то, что входит в это исполнение. Проще говоря то, что не равно нулю в столбце с этим исполнением (в примере зеленый столбец 012). Всем кто откликнется огромный плюс к карме)
 
Цитата
таблица, в которой в зеленое поле вводится номер исполнения
Макрос в модуль листа Лист1, срабатывает при изменении значения в ячейке АА3
Код
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("AA3")) Is Nothing Then
    Application.EnableEvents = False
Dim FoundCell As Range
Dim FAdr As String
Dim FoundNomer As Range
Dim iLastRow As Integer
Dim iStart As Long
Dim iEnd As Long
Dim j As Integer
   iLastRow = Cells(Rows.Count, "AB").End(xlUp).Row + 1
   If iLastRow >= 4 Then Range("AB4:AD" & iLastRow).Clear
    Set FoundCell = Columns(5).Find("Обозн. исполн.", , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then         'нашли Обозн. исполн.
      FAdr = FoundCell.Address
      Do
        Set FoundNomer = Range(Cells(FoundCell.Row, "F"), Cells(FoundCell.Row, "O")).Find(Target, , xlValues, xlWhole)
         If Not FoundNomer Is Nothing Then   'нашли номер исполнения
           iStart = FoundCell.Row + 1
           Set FoundCell = Columns(5).Find("Обозн. исполн.", After:=FoundCell)
           If FoundCell.Address = FAdr Then
             iEnd = Cells(Rows.Count, "E").End(xlUp).Row
           Else
             iEnd = FoundCell.Row - 1
           End If
           For j = iStart To iEnd   'цикл по документации выбранного номера исполнения
             If IsNumeric(Cells(j, FoundNomer.Column)) Then
               iLastRow = Cells(Rows.Count, "AB").End(xlUp).Row + 1
               Cells(iLastRow, "AB") = Cells(j, "D")                 'чертеж
               Cells(iLastRow, "AC") = Cells(j, "E")                 'наименование
               Cells(iLastRow, "AD") = Cells(j, FoundNomer.Column)   'количество
             End If
           Next
             iLastRow = Cells(Rows.Count, "AB").End(xlUp).Row
             Range("AB4:AD" & iLastRow).Borders.Weight = xlThin      'границы
             Exit Do
         End If
         Set FoundCell = Columns(5).Find("Обозн. исполн.", After:=FoundCell)
      Loop While FoundCell.Address <> FAdr
     End If
 End If
  Application.EnableEvents = True
End Sub
 
Большое спасибо. Если есть возможность хотелось бы формулой еще.
Страницы: 1
Наверх