|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.11.2013, 15:48 | #1 |
Пользователь
Регистрация: 08.11.2010
Сообщений: 33
|
Обьединение листов из закрытых книг
Здравствуйте, понимаю, что тема избита, но ни одного решения подходящего под мои условия я не нашел на просторах форумов, именно поэтому прошу Вашего участия
Дано: множество файлов разного наименования (например "книга 1", "книга 2"), в которых одинаковые листы по наименованию и структуре (лист1, лист 2, лист 3), все файлы в одной папке temp Что нужно: обьединить содержимое листов "лист 2" всех книг на лист 2 книги 3 Условие: Действие выполняется с условием, что при наличии в листе 2 книги 3копируемых данных, добавляются только новые. |
20.11.2013, 15:50 | #2 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Если что, стол заказов здесь:
http://www.programmersforum.ru/forum...sprune=-1&f=29
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
20.11.2013, 17:41 | #3 |
Пользователь
Регистрация: 08.11.2010
Сообщений: 33
|
Спасибо, в таком случае этот раздел стоит перенести в раздел фриланс.
|
20.11.2013, 17:44 | #4 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Почему? Здесь безвозмездно помогают. Особенно тем, кто сам что-то делает. А заказы да, во фриланс.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
20.11.2013, 18:15 | #5 |
Пользователь
Регистрация: 08.11.2010
Сообщений: 33
|
Форумчане мне помогли с циклом:
Private Sub CommandButton2_Click() Dim x As Range, ws As Worksheet, p As String Application.ScreenUpdating = False: Application.DisplayAlerts = False Set ws = Sheets("Лист 2"): Set x = ws.[C4:N25]: x.ClearContents Sheets.Add.Name = "tmp": p = ThisWorkbook.Path & "\" For Each f In Array("Книга 1.xlsx", "Книга 2.xlsx") With ActiveSheet.Range(x.Address) .ClearContents .Formula = "='" & p & "[" & f & "]Лист 2'!" & x.Address .Copy x.PasteSpecial Paste:=xlPasteValues End With Next ActiveSheet.Delete: x.Value = x.Value: [C15:N15].Value = [C3:N3].Value: [A1].Select End Sub Но, как я вижу здесь речь идет о копировании и вставке, вопрос в том, что бы вставить последовательно, все содержимое копируемых листов |
21.11.2013, 06:59 | #6 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
2. Известен ли диапазон ячеек для копирования? Или, хотя бы максимальное количество строк и столбцов в файлах-источниках?
Чем шире угол зрения, тем он тупее.
|
|
21.11.2013, 10:33 | #7 |
Пользователь
Регистрация: 08.11.2010
Сообщений: 33
|
Доброе утро, подразумевается, что :
1. Проверять на совпадение (заполненнение) в диапазоне A1:A100, и при появление новой заполненной ячейки, которой нет в консолидированной книге Книга 3, добавлять к существующим в ней записям 2. Диапазон копирования A1:i100 (часть строй пустая, поскольку заполнение происходит ежедневно), поэтому копировать необходимо только заполненные строки, как фильтр для проверки ячейка A1 |
21.11.2013, 11:25 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Чтобы не тратить время зря, давайте уточним:
1. Книга, в которую собираем данные называется "Книга3", а лист этой книги, на который собираем данные, называется "Лист2". Так? 2. Где находится папка с файлами, из которых требуется получить новые данные? Необходимо либо знать полный путь (прописав его в макросе), либо выбирать папку в диалоговом окне. 3. Из каждой книги в папке "temp" берем данные из листа "Лист2" в диапазоне "A1:I100", проверяем на совпадение с имеющимися данными по столбцу "A" и если такого значения нет, то добавляем эти строки к имеющимся. Так?
Чем шире угол зрения, тем он тупее.
|
21.11.2013, 17:15 | #9 |
Пользователь
Регистрация: 08.11.2010
Сообщений: 33
|
Спасибо большое за участие, относительно вопросов
1. Все верно, книга, в которую собираем данные называется "Книга3", а лист этой книги, на который собираем данные, называется "Лист2". 2. папка с файлами, из которых требуется получить новые данные находится по адресу с:\temp 3. Из каждой книги в папке "temp" берем данные из листа "Лист2" в диапазоне "A1:I100" проверяем на совпадение с имеющимися данными по столбцу "D" и если такого значения нет, то добавляем все новые строки к имеющимся. |
22.11.2013, 09:19 | #10 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Лучше, примерно, так, ибо при больших объемах формулы будут сильно тормозить процесс:
Код:
1. Макрос должен находиться в той книге, в которую требуется собрать данные. 2. Книга с макросом не должна находиться в папке-источнике ("C:\temp"). 3. Если имя книги совпадет с именем книги с макросом, или в текущем файле не будет существовать лист с именем "Лист2", то будет ошибка. Если нужно - вставьте соответствующие проверки, либо укажите, что в этих случаях нужно сделать.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 22.11.2013 в 09:23. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос аля ВПР для формирования свода из закрытых книг | MaxxVer | Microsoft Office Excel | 15 | 28.08.2012 12:02 |
Обьединение листов разных книг. | Viktorkv | Microsoft Office Excel | 9 | 25.10.2011 21:25 |
Получение данных из множества закрытых книг книг | hardkain | Microsoft Office Excel | 1 | 27.09.2011 20:18 |
Объединение книг и некоторых листов ? | vovik07 | Microsoft Office Excel | 5 | 20.05.2010 11:52 |
копирование листов из закрытых книг | mephist | Microsoft Office Excel | 4 | 10.07.2009 17:18 |