Страницы: 1
RSS
Сортировка по заданому перечню, Отсортировать список с разных листов, на первом листе по перечню из колонки А
 
Здравствуйте! Помогите пожалуйста облегчить работу. У меня бывает по 5-10 разных смет, где работы или материалы в разном порядке расположены, что бы высчитать общее количество одинаковых работ в сметах, приходится долго сортировать в ручную. Можно ли как то это автоматизировать в ексель? Бывает основной перечень, чуть чуть отличается от текста наименования работ на листах 2,3 и тд... (например, лишний пробел или опечатка в слове).
 
Цитата
основной перечень, чуть чуть отличается от текста наименования работ на листах 2,3
Но шифр (ТЕР) у этих работ должен быть одинаков. На листе 1 введите столбец с шифром работ и по этому
шифру подтягивайте данные с других листов.
И старайтесь избавиться от объединенных ячеек. Удачи!
 
Избавиться не получиться, так как копирую разные сметы в свой файл эксель, а объединение ячеек программа сметчиков делает. На счет шифра ТЕР, хорошая подсказка, поможет избежать опечаток, спасибо! Хотя по этой колонке есть ячейки без шифра (цена поставщика), значит отпадает как вариант.
Изменено: Energo73 - 25.10.2022 12:32:07
 
Цитата
На счет шифра ТЕР,
Сделайте пример с шифром на первом листе, будем думать как быть дальше
 
Добавил колонку шифр  
 
А работы, приведенные на листе 1, на других листах встречаются не более одного раза?
 
Да, не более одного раза, на каждом листе. Но на разных листах естественно они могут совпадать, для этого и произвожу эту работу, что бы вести итого по всем листам.
Изменено: Energo73 - 25.10.2022 13:21:18
 
Пишем макрос с циклом по имеющимся ТЕР и по всем листам, кроме "Общая".
Так по крайней мере будут подтянуты данные по всем ТЕР.
А там где стоит цена поставщика можно присвоить свой ТЕР?
 
ТЕР присвоить можно, но смет может быть много, а строк в них еще больше, если вручную все просматривать, искать одинаковые товары, что бы вручную присвоить ТЕР на листах, будет проще вручную их скопировать и перенести в общий лист.
 
Можно не присваивать ТЕР, а добавить цена поставщика_1, цена поставщика_2 и т.д. и подтягивать данные
по этому параметру
 
В разных сметах, разные материалы, сметчики не станут каждому разделу  присваивать номер. Тут остается только вариант сортировки работы, которая всегда с ТЕР, а материалы уже в ручную расставлять. Хоть на половину меньше работы будет)
 
Цитата
Хоть на половину меньше работы будет
Макрос в стандартный модуль, запускать при активном листе Общая
Код
Sub PoiskTER()
Dim Sht As Worksheet
Dim i As Long
Dim iLastRow As Long
Dim FoundCell As Range
Dim Col_TER As Integer
     iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
     Range("C3:D" & iLastRow + 1).ClearContents
     Range("F3:G" & iLastRow + 1).ClearContents
     For i = 3 To iLastRow Step 2
       Cells(i, "E") = 0
       Cells(i, "H") = 0
     Next
  For Each Sht In Worksheets                            'цикл по всем листам
    If Sht.Name <> "Общая" Then
      With Sht
       Set FoundCell = .Rows("3:6").Find("Шифр и номер позиции норматива", , xlValues, xlWhole)            'поиск
        If Not FoundCell Is Nothing Then
          Col_TER = FoundCell.Column
          For i = 3 To iLastRow Step 2
          If Not Cells(i, "A") Like "цена поставщика*" Then
           Set FoundCell = .Columns(Col_TER).Find(Cells(i, "A"), , xlValues, xlWhole)
           If Not FoundCell Is Nothing Then
             If Sht.Name = "Лист2" Then
              .Range(.Cells(FoundCell.Row, "C"), .Cells(FoundCell.Row + 1, "D")).Copy Cells(i, "C")
              Cells(i, "E") = Replace(.Cells(FoundCell.Row, "E"), ".", ",")
             Else
              .Range(.Cells(FoundCell.Row, "C"), .Cells(FoundCell.Row + 1, "D")).Copy Cells(i, "F")
              Cells(i, "H") = Replace(.Cells(FoundCell.Row, "E"), ".", ",")
             End If
           End If
          End If
           Set FoundCell = Nothing
          Next
        End If
        Set FoundCell = Nothing
      End With
    End If
  Next
End Sub
 
Ух ты, здорово! Благодарю!!!
Страницы: 1
Наверх