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

Страницы: 1
Копирование и вставка строк определенное количество раз в умной таблице, Отключение умной таблицы до работы макроса и включение ее после
 
По каждой теме, всех участников благодарил за работу. Подскажите что еще должен был написать?
Копирование и вставка строк определенное количество раз в умной таблице, Отключение умной таблицы до работы макроса и включение ее после
 
Здравствуйте.
Есть файл "заявка", который необходимо импортировать в 1С. Условием для импорта данных является то, что вся номенклатура должна быть в количестве 1 штука. Нашел макрос который копирует и вставляет строки в зависимости от первоначального значения в столбце "количество" по нажатию кнопки /заполнить/. Часть данных диапазона заполняется формулами. Есть необходимость делать это автоматически, так как пользователь должен только выбрать только наименование и указать количество, остальное должно быть на автомате. Это помогает делать умная таблица. Но как только вставляешь в диапазон умную таблицу, макрос копирования и вставки перестает работать. Подскажите как дополнить код, что бы умная таблица преобразовывалась в обычный диапазон, затем копировались и вставлялись строки, и затем в весь диапазон снова вставлялась умная таблица. Последнее нужно для возможности корректировки заявки или добавления позиций.
В приложении два файла: "заявка" - это работающий макрос копирования без умной таблицы и "с умной таблицей" - это не работающий макрос.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Столкнулся с проблемой во время работы с этим макросом.  В моем рабочем файле на листе NEWСверка в столбце "Дата прихода SH" в ячейках установлен формат дата ДД.ММ.ГГГГ. Если я меняю формат на ДД.ММ.ГГ;@ формат без проблем меняется. Даты в фильтре группируются по годам и месяцам. Скопировал макрос в свой рабочий файл в отдельный модуль, сделал кнопку загрузки, в модуль листа Page1 прописал "Option Explicit". Макрос работает.

В чем собственно проблема.

Копирую на лист Page1 данные выгруженные из другой программы с периодом часть которого ранее уже внесена в таблицу на лист "Дата прихода SH". Проблема в том, что когда добавляются данные, то в столбце "Дата прихода SH"  вставляются значения с форматом дата ДД.ММ.ГГГГ но применить к этим ячейкам другой формат даты не получается до тех пор пока не кликнешь по ячейки два раза. То есть старые (которые были) и новые (которые добавляются) ячейки хоть и имеют обе формат даты но они разные! Соответственно когда идет проверка данных макрос понимает это как различия и дублирует одинаковые данные из-за несоответствия форматов даты.

Как быть? В чем может быть проблема? Напрашивается такое решение: перед тем как начать проверять данные надо на листе "Page1" в столбце "J" преобразовать значения в даты и как то обновить ячейки, например с помощью поиска и замены символа. Как можно это исправить? Какой код и куда надо вставить?
Пример в приложении. Для наглядности я поменял формат дат на листе "Дата прихода SH" на  ДД.ММ.ГГ;@ Если нажмем загрузить, то увидим дубликаты.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Спасибо, Kuzmich, помог в решении задачи. Вот собственно его работа:
Код
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


Пример в приложении. Может кому пригодится.
Изменено: bali77 - 31.10.2016 12:28:12
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Цитата
Может iLastNew определять по столбцу В
По столбцу В тоже не получится. Есть данные - акты сверок - у них нет значений тип документа и номер документа. Это данные оплаты, они вносятся в таблицу вручную. Буду указывать тип документа и все.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Цитата
В моем рабочем документе.... Почему так?
Разобрался. В столбце А были незаполненные ячейки (отсутствовало значение п/н) и соответственно макрос и понимал это как первая свободная ячейка.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
В моем рабочем документе в таблице NEWСверка уже заполнено 670 строк, то есть первая
свободная ячейка A671. Скопировал модуль с макросом из примера в свой
рабочий документ, выполняю макрос, данные добавляются в ячейки с 138 по 169. Данные
на листе Page1 те же, что в примере. В коде ничего не менял. Почему
так?
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Если вместо Кнопка14_щелкнуть() прописываю Range("G1").Select макрос не
работает. Это для единого стиля в документе, если активирую ячейку G1 то
макрос срабатывает. Кнопка выбивается из стиля. Как исправить?
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
В таблице на листе «NEWСверка» нельзя удалить строки A3 и A4 они как то связаны с проверкой. То есть, если я удаляю все строки, что бы загрузить все данные заново, то макрос выдает ошибку и ссылается вот на эту строку: iLastNew = Range("A3").End(xlDown).Row + 1  Почему?

Наименование поставщика добавляется с переносами как в оригинале на листе «Page1». Из-за этого не работает формула подстановки в столбце «F». Нужно чтобы переносов не было.

А в целом макрос работает как надо.  
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Да, потому что остальные уже имеются в таблице.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Цитата
Вы можете написать - какие строки из листа Page1 должны быть добавлены в таблицу NewСверка
В таблицу NewСверка должны попасть все строки в которые включают в себя: п/н, номер документа, дата, rub, поставщик и сумма б/н. Что в итоге должно получится представлено в таблице NewСверка в строках с 11 по 36 (четыре накладные забыл добавить: 40105, 40116, 18450, 18460).
Цитата
Есть ли возможность избавиться от объединенных ячеек на листе Page1?
Я сам пытаюсь собрать этот макрос и для себя разбил решение на две задачи:
1. преобразование данных
2. добавление преобразованных данных в таблицу

Как я думаю делать макрос:
1. создаю новый лист
2. копирую на него нужные мне столбцы (не обращаю внимания на объединенные ячейки) в нужном мне порядке
3. форматирую данные на новом листе:
- убираю переносы (найти Ctrl+J, заменить на пробел)
- нахожу все точки и меняю на пробелы (даты становятся датами)
- задаю форматы столбцам с номерами накладных - текст, с суммой - числовой с двумя нулями после запятой с разделением разрядов
4. удаляю строки в которых нет слова например: RUB
Все первый этап окончен - это я могу сделать сам.
Второй этап:
5. сверка таблиц нового созданного листа с листом NEWСверка
6. если в таблице NewСверка нет строк которые есть в новом листе, то добавляем их в первую пустую ячейку в конце таблицы столбца А.
7. после того как данные вставлены новый лист удаляем.
Все. Вот так рассуждаю я. Может есть путь короче, но я о нем не знаю.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Цитата
Что подразумевается под нарастающим итогом?
Может я неправильно выразился, но имею ввиду что список накладных на листе Page1 дополняется раз в неделю. Копирую данные из выгрузки и вставляю в первую свободную нижнюю ячейку. Таким образом там и заголовки и шапка таблиц и одинаковые номера страниц будут повторяться неоднократно. Это так сказать первоисточник в который я не вношу ни каких изменений.

Цитата
Сравнивать по дате, номеру и сумме и , если не совпадают, то добавлять вниз таблицы?
Да, верно.  
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Вопрос в том, что нужен макрос, который без посредника (лист "Приходы" на котором данные приводятся в соответствие, а потом вручную переносятся) перенесет данные в динамичную таблицу. Макрорекордером такой макрос не записать, так как многие составляющие являются переменными. Сам написать не могу, нет столько знаний. Буду рад если направите на статьи которые помогут мне решить эту задачу.
Макрос для заполнения динамичной таблицы данными из другого листа книги с проверкой на дубликаты
 
Здравствуйте.
Как можно с помощью макроса заполнять динамичную таблицу на листе "NEWСверка" данными с листа "Page1"? Пример в приложении. При переносе данных нужно проверить общую таблицу на дубликаты, чтобы исключить случайное задвоение данных. Ранее заполненные данные должны сохраняться.

На листе "Page1" находятся данные выгруженные из другой программы. Эти данные дополняются каждую неделю нарастающим итогом. На листе "Page1" в наименовании поставщиков есть переносы – их надо заменить пробелом. При переносе форматы должны быть соответствующими: даты датами, числа числами, тексты текстами.

Сейчас делаем так: на листе "NEWПриход" записан макрос на копирование и вставку столбцов в нужном порядке, затем вручную копируем в "NEWСверка". Хотелось бы автоматизации, что бы при активации ячейки G1 "загрузить приход" на листе "NEWСверка"данные сразу переносились в таблицу.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Все работает, большое спасибо!
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Не помогло. После переноса нельзя редактировать данные в столбце "Поставщик". Данные можно удалить, а изменить (вписать другого поставщика) нельзя - ругается.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Обнаружил небольшую проблему. После переноса нельзя редактировать данные в столбце "Поставщик". Вместе со столбцом переносится проверка данных из источника. Как это можно убрать?
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Спасибо за помощь.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Странно, нажимаю "удалить" пишет - ошибка вы не можите удалять свои сообщения!
Если я не могу удалить свое сообщение, как я должен тогда информировать о кроссе? Указать прямую ссылку на тему этого форума? В правилах ничего об этом нет. Подскажите как это сделать?
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Удалено с других форумов, осталось сообщение только здесь.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Отличный вариант, подходит. А можно в код внести дополнение, чтобы на новом листе в заголовках таблицы сразу появились фильтры.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Размещение сообщения в разных форумах не является нарушением. Администрация форума не рекомендует это делать в целях не обесценивания усилий тех, кто даст ответ вторым-третьим и т.д. У меня другое мнение. Возможно, что второй или третий решит задачу лучше первого. На разных форумах - разные люди, значит разные решения.
Автоматическое копирование таблицы на другой лист с изменением положения столбцов
 
Здравствуйте, друзья.
Имеем «умную» таблицу на листе «Ведомость», в нее добавляем данные. Таблица имеет столбцы в часть которых вводим данные в ручную, другая часть заполняется с помощью формул. Строки в таблице добавляются, но наступит момент, когда часть строк будет удалена за ненадобностью.
Помогите решить следующую задачу:
Требуется автоматическое копирование данных этой таблицы (лист «Ведомость») с сохранением форматирования, ширины и высоты строк и столбцов на лист «Москва». При этом данные должны быть значениями, а столбцы должны быть построены в другой последовательности, один из столбцов не нужно копировать вовсе. Хотелось бы заполнить одну таблицу, переключится на  лист «Москва», а там все уже заполнено, далее уже в ручную копируется этот лист в новую книгу правится фильтрами и сохраняется как отчет.
Как это работает сейчас:
Реализовано с помощью записи обычного макроса, копировать столбец из одной таблицы в другую. Запускается макрос кнопкой «Заполнить лист Москва» на листе «Ведомость».
Что в этом способе не нравится:
Примитивно, на больших объемах данных время работы макроса увеличивается и еще все это мелькает перед глазами, при подготовки отчета может возникнуть ошибка пользователя (забыл обновить/заполнить лист «Москва».
Если существуют решения этой задачи, помогите ее решить. Несколько дней пытаюсь найти на форумах подобное, но без успеха. Сам я в VBA не силен, поэтому прошу помощи. Спасибо.
Страницы: 1
Наверх