Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2017, 18:33   #1
user2017
Пользователь
 
Регистрация: 11.08.2017
Сообщений: 20
По умолчанию Макрос

Здравствуйте, нуждаюсь в помощи т.к. не супер знаток языка VBA. Есть 2 таблицы (книги), нужно из одной таблицы(книги 1) скопировать данные одного столбца в другую таблицу(книгу 2). При этом книги имеют следующий вид:
Таблица 1 (Книга1)
Книга1.xlsx

Таблица 2 (Книга2)
Книга2.xlsx

Мне нужно откопировать 2 столбец из Книги 1 и вставить его во второй столбец Книги 2, при этом данные из 2ого столбца должны соответствовать данным из 1ого столбца. Соответственно я должен получить в Книге2 такую таблицу:

Книга3.xlsx

В Таблице 2 (Книга2) в столбце "А" у меня уже проставлены нужные данные, и нужно к ним проставить соответствующие данные из Таблицы 1 (Книга1)
Я сначала думал, что должно быть условие в макросе, что если "а" из Книги1 = "а" из Книги2, то копировать значение из столбца2 Книги1 и вставить его в столбец2 Книги2 и так сделать для значений "b","c" и т.д., но потом нашел информацию про функцию ВПР(), попробовал и не получилось, скопированные значения из столбца "В" Таблицы 1 вставлялись в Таблицу 2 в том же порядке в котором они были в первой таблице, а во второй таблицы у меня может быть рандомное расположение данных в столбце "А"... Если кто может помочь, то буду очень рад.
user2017 вне форума Ответить с цитированием
Старый 11.08.2017, 21:22   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так я ведь уже подсказывал на другом форуме...
Т.к. там файлов небыло, то вариант был только один - рекордер и руки:
Код:
Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[Книга1 (2).xlsx]Лист1'!C1:C2,2,0)"
    Selection.AutoFill Destination:=Range("B1:B3")
    Range("B1:B3").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Ну и далее можно дорабатывать.
Но Вы даже пробовать не стали, предпочли погрубить.
Есть конечно и другие более быстрые и "техничные" варианты, но я пас...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.08.2017, 08:38   #3
user2017
Пользователь
 
Регистрация: 11.08.2017
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так я ведь уже подсказывал на другом форуме...
Т.к. там файлов небыло, то вариант был только один - рекордер и руки:
Код:
Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[Книга1 (2).xlsx]Лист1'!C1:C2,2,0)"
    Selection.AutoFill Destination:=Range("B1:B3")
    Range("B1:B3").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Ну и далее можно дорабатывать.
Но Вы даже пробовать не стали, предпочли погрубить.
Есть конечно и другие более быстрые и "техничные" варианты, но я пас...
Спасибо! А можно узнать что в этой строчке : ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[Книга1 (2).xlsx]Лист1'!C1:C2,2,0)" значит !C1:C2,2,0? это обращение к столбцам С? Если да, то зачем?
И второй вопрос, разве если во второй таблице есть какие-то данные они не должны перезатереться новыми значениями из первой таблицы?
user2017 вне форума Ответить с цитированием
Старый 14.08.2017, 09:25   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от user2017 Посмотреть сообщение
обращение к столбцам С?
нет, это обращение к первому и второму столбцу, там стиль R1C1

Цитата:
Сообщение от user2017 Посмотреть сообщение
И второй вопрос
перезатрутся, так ведь так и просили:

Цитата:
Сообщение от user2017 Посмотреть сообщение
Мне нужно откопировать 2 столбец из Книги 1 и вставить его во второй столбец Книги 2, при этом данные из 2ого столбца должны соответствовать данным из 1ого столбца
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.08.2017, 09:37   #5
user2017
Пользователь
 
Регистрация: 11.08.2017
Сообщений: 20
По умолчанию

Спасибо, я
Цитата:
Сообщение от Hugo121 Посмотреть сообщение
нет, это обращение к первому и второму столбцу, там стиль R1C1


перезатрутся, так ведь так и просили:
Спасибо, я правильно понимаю что если в таблице 2 нужно данные записывать в столбец С или любой другой кроме B то будет
Selection.AutoFill Destination:=Range("С1:С3") ?

Или все дело в обращение в стиле R1C1? !C1:C2,2,0 - С1- столбец А, С2 - столбец B, а 2 и 0 что это?

Последний раз редактировалось user2017; 14.08.2017 в 10:08.
user2017 вне форума Ответить с цитированием
Старый 14.08.2017, 10:05   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну куда запишете формулу, тот столбец и "autofill", но и во всех других местах код нужно корректировать.
Вообще этот код как есть от рекордера, ничего там не менял. По уму нужно после рекордера код оптимизировать и сокращать, убирать всякие селекты и активации, делать чтоб код сам определял диапазон куда нужно вписывать формулу.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.08.2017, 10:14   #7
user2017
Пользователь
 
Регистрация: 11.08.2017
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Ну куда запишете формулу, тот столбец и "autofill", но и во всех других местах код нужно корректировать.
Вообще этот код как есть от рекордера, ничего там не менял. По уму нужно после рекордера код оптимизировать и сокращать, убирать всякие селекты и активации, делать чтоб код сам определял диапазон куда нужно вписывать формулу.
А что такое 2 и 0 знаете?
user2017 вне форума Ответить с цитированием
Старый 14.08.2017, 10:26   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от user2017 Посмотреть сообщение
что такое 2 и 0 знаете?
об этом описано в описании функции.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.08.2017, 11:18   #9
user2017
Пользователь
 
Регистрация: 11.08.2017
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
об этом описано в описании функции.
где можно описание найти?
user2017 вне форума Ответить с цитированием
Старый 14.08.2017, 11:22   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ссылка на описание в мастере функции ВПР/VLOOKUP
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Макрос при условии создает Макрос FiataliS Microsoft Office Excel 4 13.01.2014 11:37
Exel - при открытии файла через макрос, если файл отсутствует - виснет весь макрос gregory1b Microsoft Office Excel 2 14.10.2010 11:51
Макрос, запускающий макрос из другого закрытого файла petruha Microsoft Office Excel 7 14.03.2010 11:31
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51