Страницы: 1
RSS
добавление заполненных строк в excel по условию
 
Добрый день!

Прошу вас, помочь, с макросами не дружу  :) , могу только ими пользоваться.

Есть таблицаПРИМЕР.xlsx (23.56 КБ), на листе "Как сейчас" показана таблица как она заполнена сейчас. Необходимо, чтобы в зависимости от рабочего места и номера указанного в столбце "Материал_ВОМ", добавлялись новые заполненные строки (показано на листе "Как должно быть", выделены красным шрифтом). Добавление новых строк должно происходить по необходимости, например по нажатию кнопки "Добавить". Ячейки выделенные оранжевым цветом, заполняются из таблицы приведенной на листе "Табл.рабочие места" (в примере указано ограниченной количество рабочих мест, на самом деле их гораздо больше)
Голубым выделено -  номер по порядку с шагом 10
Изменено: Марина К - 14.07.2018 23:36:08
 
Уважаемые Экселепланетяне :D , обращаюсь к вам за помощью как к высшему разуму....помогите, пожалуйста, очень надо!!!!
Заполнять в ручную, проблематично, очень большой объем данных.
Если аналогичная тема уже существует, то прошу подсказать где можно с ней ознакомиться
 
Марина К, Столбец W (Компонент) и столбец AG (номер материала) - это одно и тоже?
 
Да, одно и тоже....
 
А новые рабочие места, которые нужно добавить в лист "Как сейчас" берутся с листа "Табл.рабочие места"?
 
Цитата
Марина К написал:
Заполнять в ручную, проблематично, очень большой объем данных.
Просмотрел файл но всей логики от куда что берется, так и не понял.
Про быстрое заполнение (как понял), могу предложить следующее: Копируем данные шести столбцов листа "Табл.рабочие места" в нужные столбцы листа "Как должно быть" ниже последней строки с данными. Открываем настраиваемый фильтр и сортируем всю таблицу по нужному или нужным столбцам, предположим по столбцу "Рабочее место". В результате данные сформируются по порядку, но в строках останутся пустые ячейки. Как заполнить пустые ячейки значениями сверху посмотрите здесь.
 
Цитата
Kuzmich написал:
Kuzmich
Да, берутся с листа "Табл.рабочие места"
 
Цитата
gling написал:
Просмотрел файл но всей логики от куда что берется, так и не понял. Про быстрое заполнение (как понял), могу предложить следующее:
Дело в том, что таблица "Как сейчас" уже заполнена, она довольно таки большая, чтобы попробовать вариант который вы предложили, необходимо вставлять пустаые строки между номерами в столбце "В", при это как видно на листе "Как должно быть" количествл пустых строк будет разным, а это очень трудоемко....возможно есть макрос который позволит, хотя бы добавлять пустые строки, например 10 строк, чтобы как-то ускорить этот процесс.
 
Цитата
возможно есть макрос который позволит
Если я правильно понял логику вставки строк
Код
'запускать при активном листе "Как сейчас"
Sub AddRows()
Dim RowWorkPlace As Long
Dim ArrWorkPlace
Dim i As Long
Dim iLastRow As Long
Dim FoundFruit As Range
Dim TablWorkPlace As Worksheet
Dim FAdr As String
Dim FoundCell As Range
Dim Poz As Double
   Set TablWorkPlace = ThisWorkbook.Worksheets("Табл.рабочие места")
 iLastRow = Cells(Rows.Count, "AS").End(xlUp).Row
    Range("AV1") = Range("AS1")     'ищем все уникальные рабочие места
    Range("AS1:AS" & iLastRow).AdvancedFilter xlFilterCopy, CopyToRange:=Range("AV1"), Unique:=True
     iLastRow = Cells(Rows.Count, "AV").End(xlUp).Row
     ArrWorkPlace = Range("AV2:AV" & iLastRow).Value    'раб.места в массив
   For i = UBound(ArrWorkPlace) To 1 Step -1            'цикл по рабочим уникальным местам
         'ищем последнюю строку с рабочим местом на листе "Как сейчас", чтобы вставить строки
        Set FoundCell = Columns("AS").Find(ArrWorkPlace(i, 1), , xlValues, xlWhole, , xlPrevious)
        RowWorkPlace = FoundCell.Row         'строку вставляем в RowWorkPlace+1
     Set FoundCell = TablWorkPlace.Columns(2).Find(ArrWorkPlace(i, 1), , xlValues, xlWhole)
      If Not FoundCell Is Nothing Then       'нашли рабочее место на листе "Табл.рабочие места"
         FAdr = FoundCell.Address
         Poz = Val(Cells(RowWorkPlace, "V")) 'предыдущая Поз
       Do
         Rows(RowWorkPlace + 1).Insert                                               'вставляем строку
         Cells(RowWorkPlace + 1, "V") = Poz + 10                                     'Поз
         Cells(RowWorkPlace + 1, "V").NumberFormat = "0000"
         Cells(RowWorkPlace + 1, "AG") = TablWorkPlace.Cells(FoundCell.Row, "C")     'Компонент
         Cells(RowWorkPlace + 1, "AH") = TablWorkPlace.Cells(FoundCell.Row, "D")     'название компонента
         Cells(RowWorkPlace + 1, "Y") = TablWorkPlace.Cells(FoundCell.Row, "E")      'Норма расхода
         Cells(RowWorkPlace + 1, "Z") = TablWorkPlace.Cells(FoundCell.Row, "F")      'ед.изм
         'остальные ячейки в строке аналогично
           RowWorkPlace = RowWorkPlace + 1
           Poz = Poz + 10
         Set FoundCell = TablWorkPlace.Columns(2).FindNext(FoundCell)
       Loop While FoundCell.Address <> FAdr
      End If
   Next
End Sub
 
Цитата
Цитата
Kuzmich написал:
Если я правильно понял логику вставки строк
Это ГЕНИАЛЬНО....спасибо, вы даже не представляете на сколько вы выручили меня....
 
Цитата
Марина К написал:
необходимо вставлять пустаые строки между номерами в столбце "В",
Об этом и писал, вставлять ни чего не надо, всё само организуется после сортировки. Посмотрите файл, на листе "Как сейчас" проделал процедуру описанную в сообщении #6, сверьте результат с листом "Как должно быть", глубоко не вникал но они похожи. Правда при выполнении пришлось предварительно на листе "Как сейчас" заполнить все пустые ячейки пробелом. Сделать это можно по примеру по ссылке из сообщения #6, только вместо = и стрелки вверх нужно нажать пробел, а потом Ctrl+Enter. Попробуйте пройти сообщение #6 по шагам. Конечно макросом быстрее, но нужно ждать пока его, кто нибудь напишет.
 
Цитата
gling написал:
Попробуйте пройти сообщение #6 по шагам. Конечно макросом быстрее, но нужно ждать пока его, кто нибудь напишет.
Да, действительно и ваш вариант ускоряет процесс...как-то в таком ключе я даже и не думала ...спасибо, теперь буду знать еще один вариант релизации  :) ....
Страницы: 1
Наверх