Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Из двух книг сделать одну - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Из двух книг сделать одну (Макросы/Sub)
Из двух книг сделать одну
кофемолка Дата: Четверг, 17.12.2015, 12:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день. Обращаюсь за помощью. Столкнулась на работе с необходимостью писать макрос, опыта ноль...такая работа!
Итак, две книги. Первая-имеет колонки с А по Р, вторая- 7 колонок с А по G
Нужно эти две книги объединить в одну по условию: Книга1.Поле I = Книга2.Поле В и Книга1.Поле L = Книга2.Поле А

Для наглядности примеры двух книг, из которых нужно сделать одну, вложила два файла
К сообщению приложен файл: 6665066.xlsx (18.9 Kb) · 9581531.xlsx (35.6 Kb)
 
Ответить
СообщениеДобрый день. Обращаюсь за помощью. Столкнулась на работе с необходимостью писать макрос, опыта ноль...такая работа!
Итак, две книги. Первая-имеет колонки с А по Р, вторая- 7 колонок с А по G
Нужно эти две книги объединить в одну по условию: Книга1.Поле I = Книга2.Поле В и Книга1.Поле L = Книга2.Поле А

Для наглядности примеры двух книг, из которых нужно сделать одну, вложила два файла

Автор - кофемолка
Дата добавления - 17.12.2015 в 12:54
Kuzmich Дата: Четверг, 17.12.2015, 13:01 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Так откуда копировать из книги 2 в книгу 1, которая и будет общей?
 
Ответить
СообщениеТак откуда копировать из книги 2 в книгу 1, которая и будет общей?

Автор - Kuzmich
Дата добавления - 17.12.2015 в 13:01
кофемолка Дата: Четверг, 17.12.2015, 13:04 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
новую книгу создать, чтобы она тянула данные из книга1 и книга2. Ну или можно сделать пустой ексель, в нем кнопка "счастье", которая тянет все это добро...
 
Ответить
Сообщениеновую книгу создать, чтобы она тянула данные из книга1 и книга2. Ну или можно сделать пустой ексель, в нем кнопка "счастье", которая тянет все это добро...

Автор - кофемолка
Дата добавления - 17.12.2015 в 13:04
Kuzmich Дата: Четверг, 17.12.2015, 13:07 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Попробуйте записать ваши действия по переносу данных макрорекордером.
Обе книги должны быть открыты.
Объединенные ячейки второго файла будут определенной трудностью при переносе.


Сообщение отредактировал Kuzmich - Четверг, 17.12.2015, 13:18
 
Ответить
СообщениеПопробуйте записать ваши действия по переносу данных макрорекордером.
Обе книги должны быть открыты.
Объединенные ячейки второго файла будут определенной трудностью при переносе.

Автор - Kuzmich
Дата добавления - 17.12.2015 в 13:07
SLAVICK Дата: Четверг, 17.12.2015, 13:24 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Обязательно макрос?
Может просто 3-й лист и формулами собрать?
К сообщению приложен файл: 8422128.xlsx (53.4 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеОбязательно макрос?
Может просто 3-й лист и формулами собрать?

Автор - SLAVICK
Дата добавления - 17.12.2015 в 13:24
кофемолка Дата: Четверг, 17.12.2015, 13:38 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
спасибо, попробую 3им листом нарисовать общую картину
 
Ответить
Сообщениеспасибо, попробую 3им листом нарисовать общую картину

Автор - кофемолка
Дата добавления - 17.12.2015 в 13:38
Kuzmich Дата: Четверг, 17.12.2015, 13:47 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Посмотрите общую книгу. Ваши файлы должны называться
Источник1 и Источник2, все три книги должны быть открыты.
К сообщению приложен файл: 5348596.xls (71.0 Kb)
 
Ответить
СообщениеПосмотрите общую книгу. Ваши файлы должны называться
Источник1 и Источник2, все три книги должны быть открыты.

Автор - Kuzmich
Дата добавления - 17.12.2015 в 13:47
кофемолка Дата: Четверг, 17.12.2015, 16:11 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich, спасибо, просто класс!
 
Ответить
СообщениеKuzmich, спасибо, просто класс!

Автор - кофемолка
Дата добавления - 17.12.2015 в 16:11
кофемолка Дата: Пятница, 18.12.2015, 13:31 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
знатоки, Kuzmich, а не подскажете, в чем конфликт? На одной из машин польз-ля выходит ошибка (виндовс7, офис 10)
run-time error "9"
subscript out of range

debug встает на строку с
---
[vba]
Код
With Workbooks("Источник1").Worksheets("1")
[/vba]
----
[vba]
Код
Option Explicit

Sub Автофигура2_Щелкнуть()
Dim iLastRow As Long
With Workbooks("Источник1").Worksheets("1")
.UsedRange.Copy Range("A2")
End With
With Workbooks("Источник2").Worksheets("TDSheet")
iLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("B11:B" & iLastRow).Copy Range("I3")
.Range("A11:A" & iLastRow).Copy Range("L3")
End With
End Sub
[/vba]
[moder]Коди макросов нужно обрамлять тегами. Кнопка #. На первый раз поправил.
 
Ответить
Сообщениезнатоки, Kuzmich, а не подскажете, в чем конфликт? На одной из машин польз-ля выходит ошибка (виндовс7, офис 10)
run-time error "9"
subscript out of range

debug встает на строку с
---
[vba]
Код
With Workbooks("Источник1").Worksheets("1")
[/vba]
----
[vba]
Код
Option Explicit

Sub Автофигура2_Щелкнуть()
Dim iLastRow As Long
With Workbooks("Источник1").Worksheets("1")
.UsedRange.Copy Range("A2")
End With
With Workbooks("Источник2").Worksheets("TDSheet")
iLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("B11:B" & iLastRow).Copy Range("I3")
.Range("A11:A" & iLastRow).Copy Range("L3")
End With
End Sub
[/vba]
[moder]Коди макросов нужно обрамлять тегами. Кнопка #. На первый раз поправил.

Автор - кофемолка
Дата добавления - 18.12.2015 в 13:31
Roman777 Дата: Пятница, 18.12.2015, 13:35 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
кофемолка, Предположу, что Имя книги "Источник1" или имя листа "1" не существует.


Много чего не знаю!!!!
 
Ответить
Сообщениекофемолка, Предположу, что Имя книги "Источник1" или имя листа "1" не существует.

Автор - Roman777
Дата добавления - 18.12.2015 в 13:35
кофемолка Дата: Пятница, 18.12.2015, 13:43 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Roman777, в том то все и дело, на моей машине с теми же параметрами все отлично работает
 
Ответить
СообщениеRoman777, в том то все и дело, на моей машине с теми же параметрами все отлично работает

Автор - кофемолка
Дата добавления - 18.12.2015 в 13:43
Roman777 Дата: Пятница, 18.12.2015, 14:06 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
кофемолка, просто я обратил внимание, что в файле, который Вам приложил Kuzmich в своём ответе (Сообщение № 7) в файле листы называются аля "Лист1" у Вас же в макросе указано что лист называется "1". Если лист действительно 1-й то можно убрать кавычки просто оставить [vba]
Код
With Workbooks("Источник1").Worksheets(1)
[/vba]тогда это будет обращение к первому листу (по индексу листа).


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 18.12.2015, 14:06
 
Ответить
Сообщениекофемолка, просто я обратил внимание, что в файле, который Вам приложил Kuzmich в своём ответе (Сообщение № 7) в файле листы называются аля "Лист1" у Вас же в макросе указано что лист называется "1". Если лист действительно 1-й то можно убрать кавычки просто оставить [vba]
Код
With Workbooks("Источник1").Worksheets(1)
[/vba]тогда это будет обращение к первому листу (по индексу листа).

Автор - Roman777
Дата добавления - 18.12.2015 в 14:06
кофемолка Дата: Пятница, 18.12.2015, 14:08 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Roman777, в реальных книгах лист называется совсем по-другому. Здесь я оставила "1" , для примера. Я говорю, что запускаю этот же макрос на своей машине с теми же файлами и все ок, а на машине польз-ля ошибка.
 
Ответить
СообщениеRoman777, в реальных книгах лист называется совсем по-другому. Здесь я оставила "1" , для примера. Я говорю, что запускаю этот же макрос на своей машине с теми же файлами и все ок, а на машине польз-ля ошибка.

Автор - кофемолка
Дата добавления - 18.12.2015 в 14:08
кофемолка Дата: Пятница, 18.12.2015, 15:32 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Разобралась: в параметрах папок системы не стояла галка "скрывать расширения зарегистрированных файлов".
 
Ответить
СообщениеРазобралась: в параметрах папок системы не стояла галка "скрывать расширения зарегистрированных файлов".

Автор - кофемолка
Дата добавления - 18.12.2015 в 15:32
Kuzmich Дата: Пятница, 18.12.2015, 16:39 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
Разобралась:

Я думаю, что наличие такой галочки не должно влиять на работу макроса.
А вот пробелы в названии книги или листа приведут к ошибке.
Например, "Источник1 " с пробелом в конце. Листы у вас были с названиями
Лист1 и TDSheet
 
Ответить
Сообщение
Цитата
Разобралась:

Я думаю, что наличие такой галочки не должно влиять на работу макроса.
А вот пробелы в названии книги или листа приведут к ошибке.
Например, "Источник1 " с пробелом в конце. Листы у вас были с названиями
Лист1 и TDSheet

Автор - Kuzmich
Дата добавления - 18.12.2015 в 16:39
кофемолка Дата: Воскресенье, 03.01.2016, 12:28 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich, начала пользоваться творением. И такое ощущение, что кнопка "Счастья" собирает из двух книг одну, минуя условия связи книг между собой (Книга1.Поле I = Книга2.Поле В и Книга1.Поле L = Книга2.Поле А) Связи не установлены. И еще из второй книги не все столбцы тянутся в общую книгу. Вы не подскажете, в чем проблема?
 
Ответить
СообщениеKuzmich, начала пользоваться творением. И такое ощущение, что кнопка "Счастья" собирает из двух книг одну, минуя условия связи книг между собой (Книга1.Поле I = Книга2.Поле В и Книга1.Поле L = Книга2.Поле А) Связи не установлены. И еще из второй книги не все столбцы тянутся в общую книгу. Вы не подскажете, в чем проблема?

Автор - кофемолка
Дата добавления - 03.01.2016 в 12:28
Kuzmich Дата: Воскресенье, 03.01.2016, 18:17 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Какие строки переносить в общую книгу при совпадении условий:
из Книги1
из Книги2
или из обоих книг совпадающие по условию строки?
 
Ответить
СообщениеКакие строки переносить в общую книгу при совпадении условий:
из Книги1
из Книги2
или из обоих книг совпадающие по условию строки?

Автор - Kuzmich
Дата добавления - 03.01.2016 в 18:17
Hugo Дата: Понедельник, 04.01.2016, 00:26 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Для работающих в Windows:
[vba]
Код
Option Explicit

Sub tt()
    Dim r1 As Range, r2 As Range, wb As Workbook, c As Range
    Dim t$, i&

    Application.ScreenUpdating = False

    Set r1 = Workbooks("6665066.xlsx").Sheets(1).[a1].CurrentRegion
    Set r2 = Workbooks("9581531.xlsx").Sheets(1).[a8].CurrentRegion
    Set wb = Workbooks.Add(1)

    With CreateObject("scripting.dictionary"): .comparemode = 1
        For Each c In r1.Columns(9).Cells
            .Item(c.Text & "|" & c.Offset(, 3).Text) = c.Row
        Next
        For Each c In r2.Columns(1).Cells
            t = c.Offset(, 1).Text & "|" & c.Text
            If .exists(t) Then
                i = i + 1
                r1.Rows(.Item(t)).Copy wb.Sheets(1).Cells(i, 1)
                c.Resize(, 7).Copy wb.Sheets(1).Cells(i, 17)
            End If
        Next
    End With

    wb.Sheets(1).UsedRange.EntireColumn.AutoFit
    Application.ScreenUpdating = True
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДля работающих в Windows:
[vba]
Код
Option Explicit

Sub tt()
    Dim r1 As Range, r2 As Range, wb As Workbook, c As Range
    Dim t$, i&

    Application.ScreenUpdating = False

    Set r1 = Workbooks("6665066.xlsx").Sheets(1).[a1].CurrentRegion
    Set r2 = Workbooks("9581531.xlsx").Sheets(1).[a8].CurrentRegion
    Set wb = Workbooks.Add(1)

    With CreateObject("scripting.dictionary"): .comparemode = 1
        For Each c In r1.Columns(9).Cells
            .Item(c.Text & "|" & c.Offset(, 3).Text) = c.Row
        Next
        For Each c In r2.Columns(1).Cells
            t = c.Offset(, 1).Text & "|" & c.Text
            If .exists(t) Then
                i = i + 1
                r1.Rows(.Item(t)).Copy wb.Sheets(1).Cells(i, 1)
                c.Resize(, 7).Copy wb.Sheets(1).Cells(i, 17)
            End If
        Next
    End With

    wb.Sheets(1).UsedRange.EntireColumn.AutoFit
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Hugo
Дата добавления - 04.01.2016 в 00:26
кофемолка Дата: Понедельник, 04.01.2016, 07:22 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich, нужно все колонки из двух книг перенеси в общую книгу (кроме А и В второй книги,так как они уже присуствуют в первой). А условие-сопадение одновременно колонки I первой книги с колонкой В второй книги и колонки L первой книги с колонкой A второй книги.
 
Ответить
СообщениеKuzmich, нужно все колонки из двух книг перенеси в общую книгу (кроме А и В второй книги,так как они уже присуствуют в первой). А условие-сопадение одновременно колонки I первой книги с колонкой В второй книги и колонки L первой книги с колонкой A второй книги.

Автор - кофемолка
Дата добавления - 04.01.2016 в 07:22
кофемолка Дата: Понедельник, 04.01.2016, 07:43 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Hugo, спасибо! работает!
 
Ответить
СообщениеHugo, спасибо! работает!

Автор - кофемолка
Дата добавления - 04.01.2016 в 07:43
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Из двух книг сделать одну (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!