Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты, Нужно прокомментировать код, чтобы его модернизировать дальше
 
Доброго времени суток уважаемые форумчане!
Столкнулся с аналогичной задачей, что и bali77 (https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=83725&am...),
НО у меня рабочие таблицы больше (до столбца FK).

Пожалуйста если это не трудно, сделайте комментарии в коде (см. в конце поста, надеюсь автор не будет против), я хочу сам настроить макрос под себя, чтобы не наглеть и не просить решить задачу.

Мне необходимо регулярно сводить одинаковые листы разных книг в одну. Сейчас мучаюсь руками, но это постоянно добавляет дубли, потому как фильтр по возрастанию не всегда установлен и приходится при копипасте ручками чистить. Файлы неизбежно растут и количество добавляемых дублей тоже.
Суть макроса не просто собрать, а добавлять новые уникальные значения к уже имеющимся в сводной книге. Собирает данные из сетевых папок, названия книг исходников разные, названия листа одинаковые, формат таблицы на листе одинаковый. В принципе все как в коде описанном выше.

У меня есть поле которое может служить параметром поиска и добавления, это номер заявки (во всех книгах сейчас! это диапазон EB3:EB1002, но может поменяться).

Сразу возник вопрос, у меня часть значений поля номер заявки выглядит как #Н/Д, т.к. это расчетное значение и пока строка не заполнена, соответственно и считать нечего.
Вопрос: это значение будет являться параметром для сбора строк в сводную? Если да, то как можно потом эти строки удалить из собранной динамичной таблицы?

Копировать в сводную книгу нужно всю строку с найденным уникальным значением ячейки EB(x), если быть точнее это с A до EN(включительно), для инфо на EN таблица не заканчивается, остальная часть заполняется в сводной и обновляется в исходниках для информирования менеджеров.

Заранее признателен за помощь (комментирование кода или советы как это реализовать)!

Код
Option Explicit
'Kuzmich октябрь 2016 г
'http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=83725
 
Dim i As Integer
Dim iLastNew As Integer
 
Sub Кнопка14_Щелкнуть()
Dim FoundSupplier As Range
Dim FoundMagazin As Range
Dim iLastRow As Integer
Dim FAdr As String
Dim FAdrMagaz As String
Dim flag As Boolean
Application.ScreenUpdating = False
  With Worksheets("Page1")
    Set FoundSupplier = .Columns("L:M").Find("Поставщик", , xlValues, xlWhole)
     If Not FoundSupplier Is Nothing Then
        FAdr = FoundSupplier.Address
      Do
          iLastRow = .Cells(FoundSupplier.Row + 2, 12).End(xlDown).Row
        For i = FoundSupplier.Row + 2 To iLastRow
          Set FoundMagazin = Columns("E").Find(.Cells(i, 12), , xlValues, xlWhole)
          If Not FoundMagazin Is Nothing Then
           FAdrMagaz = FoundMagazin.Address
             flag = False
           Do
               iLastNew = Range("A1").End(xlDown).Row + 1
             If .Cells(i, 5) = Cells(FoundMagazin.Row, 2) And _
                .Cells(i, 10) = Cells(FoundMagazin.Row, 3) And _
                .Cells(i, 16) = Cells(FoundMagazin.Row, 7) Then
                flag = True      'есть на листе NEWСверка такая накладная
             End If
            Set FoundMagazin = Columns("E").FindNext(FoundMagazin)
           Loop While FoundMagazin.Address <> FAdrMagaz
             If Not flag Then
               Call iInsertRow
             End If
          Else     'новый поставщик, которого нет на листе NEWСверка
               iLastNew = Range("A1").End(xlDown).Row + 1
               Call iInsertRow
          End If
        Next
         Set FoundSupplier = .Columns("L:M").Find("Поставщик", FoundSupplier)
      Loop While FoundSupplier.Address <> FAdr
     End If
  End With
Application.ScreenUpdating = True
End Sub
 
Sub iInsertRow()
     Rows(iLastNew).Insert
  With Worksheets("Page1")
       Cells(iLastNew, 1) = .Range("C" & i)        'тип
       Cells(iLastNew, 2) = .Range("E" & i)        'номер
       Cells(iLastNew, 3) = .Range("J" & i)        'дата
       Cells(iLastNew, 4) = .Range("K" & i)        'валюта
       Cells(iLastNew, 5) = .Range("L" & i)        'поставщик
       Cells(iLastNew, 7) = .Range("P" & i)        'сумма б/н
       Cells(iLastNew, 7).NumberFormat = "#,##0.00"
  End With
End Sub
Выполнение созданного цикла с условием, Выполнение цикла по условию после запуска кнопкой
 
Доброго времени суток уважаемые форумчане!

Помогите пожалуйста, как мне реализовать запуск цикла при нажатии кнопки.

В задачу цикла нужно вложить:
проверка ячейки [Книга1.xlsx]Лист1'!A1 (если НЕ ПУСТАЯ, берёт значение и подставляет в ячейку A2 текущей книги и сохраняет текущую книгу с названием в ячейке А3, и так идет вниз по списку, а если ПУСТАЯ, значит список закончился и циклу тоже нужно закончиться).

При этом мне еще нужно ячейку А4 выравнивать по высоте, т.к. значение в ячейке A4, по количеству символов получается разное, а нужно чтобы текст был виден полностью!

я с VBA пока, что по имени отчеству и только на ВЫ, но мне благодаря форумам и постам удалось реализовать следующее:
Собственными руками указываю значение из [Книга1.xlsx]Лист1'!A1 в A2 текущей книги. Далее немного Эксель магии и что нужно ВПРится и Заполняется "само")))). Руками ячейку выравниваю по высоте.
Нажимаю кнопку "Сохранить" (в ней настроено сохранение книги с именем из ячейки А3 в указанную папку с определенным расширением файла).

К сожалению приложить файлы не получится, т.к. после ручного внесения значения в книгу, данные берутся из 3-4 других книг и на основании этого заполняется определенная форма документа, да еще и 2ой лист в книге с кнопкой "Сохранить" тоже заполняется определенным образом!

Потом я отдаю эти файлы, другому сотруднику и он вносит свои дополнения и печатает.

Код кнопки "Сохранить" ниже
Код
Sub MySaveName()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\1\" & Range("a3").Value & "xls"
Application.DisplayAlerts = True
End Sub
Выполнение созданного цикла с условием при нажатии кнопки, Выполнение цикла по условию после запуска кнопкой
 
Доброго времени суток уважаемые форумчане!

Помогите пожалуйста, как мне реализовать запуск цикла при нажатии кнопки.

В задачу цикла нужно вложить:
проверка ячейки [Книга1.xlsx]Лист1'!A1 (если НЕ ПУСТАЯ, берёт значение и подставляет в ячейку A2 текущей книги и сохраняет текущую книгу с названием в ячейке А3, и так идет вниз по списку, а если ПУСТАЯ, значит список закончился и циклу тоже нужно закончиться).

При этом мне еще нужно ячейку А4 выравнивать по высоте, т.к. значение в ячейке A4, по количеству символов получается разное, а нужно чтобы текст был виден полностью!

я с VBA пока, что по имени отчеству и только на ВЫ, но мне благодаря форумам и постам удалось реализовать следующее:
Собственными руками указываю значение из [Книга1.xlsx]Лист1'!A1 в A2 текущей книги. Далее немного Эксель магии и что нужно ВПРится и Заполняется "само")))). Руками ячейку выравниваю по высоте.
Нажимаю кнопку "Сохранить" (в ней настроено сохранение книги с именем из ячейки А3 в указанную папку с определенным расширением файла).

К сожалению приложить файлы не получится, т.к. после ручного внесения значения в книгу, данные берутся из 3-4 других книг и на основании этого заполняется определенная форма документа, да еще и 2ой лист в книге с кнопкой "Сохранить" тоже заполняется определенным образом!

Потом я отдаю эти файлы, другому сотруднику и он вносит свои дополнения и печатает.

Код кнопки "Сохранить" ниже
Код
Sub MySaveName()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\1\" & Range("a3").Value & "xls"
Application.DisplayAlerts = True
End Sub
Изменено: Jake85 - 11.01.2020 01:16:41
Удаление указанных символов из ячейки
 
Добрый день!

Есть задача привести значение столбца к единому формату, в нашем случае телефон.
Сделать можно или индивидуально для каждой ячейки в столбце и протянуть или через обработку всего столбца сразу, например по нажатию кнопки, которой будет заголовок столбца.
Выбор решения зависит от нагрузки на файл, нужно чтобы файл не стал огромным при использовании макросов для например 10-15 столбцов с разными параметрами.
Ранее находил макрос " =repl(ячейка для обработки;ячейка с перечислением удаляемых символов) ", но сейчас он не работает и не могу найти сам макрос.
Если у кого-то из формучан есть опыт или что-то подобное помогите пожалуйста, может я не нашел тему которую обсуждали ранее.
Изменено: Jake85 - 03.09.2019 11:09:10
Страницы: 1
Наверх