Страницы: 1
RSS
Составить список на заказ исходя из количества изделий
 
Здравствуйте дорогие форумчане.В excel работаю , про макросы услышал недавно. Пытаюсь автоматизировать работу но знаний по макросам не хвотает. Имеиться файл первый лист список изделий второй лист список деталей каждого изделия третий лист бланк заказа деталий. Нужно составить список на заказ в третем листе исходя из количнства изделий в первом листе вписать детали из второго листа умножить количество деталий на количество изделий.Помогите, пожалуйста, спасибо всем .
 
Цитата
Нужно составить список на заказ в третем листе
Это на листе "order". Что вводиться вручную и что нужно подтягивать макросом?
 
На листе order нужно подтягивать макросом (всегда делал вручную)
 
Я спрашиваю о том, что вы вводите вручную: Изделие - деталь,
а остальные данные подтягиваем макросом?
 
нужно подтягивать все  
 
Цитата
Kuzmich написал:
что вы вводите вручную
jeka100, Вы вопрос полностью прочитали? А то ответ только на вторую часть вопроса.
 
ввожу вручную только количество каждого изделия в первом листе
 
Цитата
нужно подтягивать все
Я не понимаю, что подтягивать?
На первом листе у вас 5 видов изделий, на третьем только два.
Почему на листе order для изделия 3 количество увеличилось в два раза, а цена осталась прежней?
Изменено: Kuzmich - 18.09.2017 14:02:05
 
В примере на первом листе указан заказ на два изделия из списка в связи с этим на третий лист копируются только детали заказаных изделий, если на первом листе количество равно 0 подтягивать его не надо
Изменено: jeka100 - 18.09.2017 14:15:04
 
Цитата
Kuzmich написал:
Почему на листе order для изделия 3 количество увеличилось в два раза, а цена осталась прежней?
извеняюсь цена тоже должна умножится на количество деталей
 
Макрос для вашей кнопки на первом листе
Код
Sub Button2_Click()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
Dim Ord As Worksheet
Dim FoundИзделие As Range
Dim Kol_vo As Integer
  Set Ord = ThisWorkbook.Worksheets("order")
   iLR = Ord.Cells(Ord.Rows.Count, 3).End(xlUp).Row + 1
   Ord.Range(Ord.Cells(4, 2), Ord.Cells(iLR, 7)).ClearContents
With Worksheets("parts")
     iLastRow = Cells(Rows.Count, 3).End(xlUp).Row
  For i = 3 To iLastRow
    If Cells(i, 2) <> 0 Then
      Kol_vo = Cells(i, 2)
      Set FoundИзделие = .Columns(2).Find(Cells(i, 3), , xlValues, xlWhole)
       If Not FoundИзделие Is Nothing Then
          FAdr = FoundИзделие.Address
        Do
          iLR = Ord.Cells(Ord.Rows.Count, 3).End(xlUp).Row + 1
          .Range(.Cells(FoundИзделие.Row, 2), .Cells(FoundИзделие.Row, 7)).Copy Ord.Cells(iLR, 2)
          Ord.Cells(iLR, 4) = Ord.Cells(iLR, 4) * Kol_vo 'кол.деталей
          Ord.Cells(iLR, 7) = Ord.Cells(iLR, 7) * Kol_vo 'цена
          Set FoundИзделие = .Columns(2).FindNext(FoundИзделие)
        Loop While FoundИзделие.Address <> FAdr
       End If
    End If
  Next
End With
   Ord.Activate
End Sub
 
Все работает. Большое спасибо за помощь.
Страницы: 1
Читают тему
Наверх