IGGI Пользователь Сообщений: 15 |
Добрый день! |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#2 14.06.2013 22:52:35
В таком случае результат получите быстрее, если разместите свою тему в разделе «Работа». Но и там потребуется Ваш файл с исходными данным и с желаемым результатом. Или ждите здесь… |
||
как-то так — простенько без излишеств Изменено: kalbasiatka — 15.06.2013 00:44:31 |
|
IGGI Пользователь Сообщений: 15 |
Kalbasiatka, спасибо Вам огромное!!! Так быстро..) Это очень похоже на то что мне нужно. Буду пробовать адаптировать для своих данных) |
IGGI Пользователь Сообщений: 15 |
kalbasiatka, Вы не могли бы подсказать, что нужно добавить, что бы на другую страницу переносились не только значения исходных ячеек, но и форматирование (фон ячейки, границы, шрифт и т.п)? |
kalbasiatka Пользователь Сообщений: 684 |
#6 15.06.2013 21:03:19 может так?
|
||
IGGI Пользователь Сообщений: 15 |
Да, это то, что нужно!) Спасибо Вам большое, все получилось! |
IGGI Пользователь Сообщений: 15 |
Kolbasiatka, в моем случае все таки не получилось) В смысле у меня данные не в одной строке, а в разных. Как только в этой строке Else: Range(«A2, C2, E2» .Copy .Cells(lr + 2, 1) появляются данные из разных строк, выдает ошибку. Например вот так: Else: Range(«A2, C2, E3 » .Copy .Cells(lr + 2, 1) уже не получается. Нельзя ли написать макрос, в кот. я смогу подставлять данные из множества ячеек на листе из разных строк и столбцов? |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Вот поэтому Вам и порекомендовали во 2-м посте перенести тему туда, где ей самое место. Я сам — дурнее всякого примера! … |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#10 16.06.2013 15:06:03
Вы об этом предупредили? Или свой файл-пример показали? |
||
IGGI Пользователь Сообщений: 15 |
#11 16.06.2013 15:50:36 Да нет, не показывал. Мне сходу предложили вариант который полностью меня устроил. А дополнительная, второстепенная задача, возникла позже. Тут я извиняюсь, пример сделаю.
Уважаемый, KukIP! Я так понимаю рекомендовали не Вы, Вы не модератор и по существу вопроса Вам сказать нечего. Во втором посте модератором было сказано «или ждите здесь». Так что не стоит засорять ветку, своими умными замечаниями, я разберусь без Вас. |
||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#12 16.06.2013 15:57:14
И это правильно! |
||
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#13 16.06.2013 16:03:51
Есть чего сказать. Но не для халявщиков. Тем более не для грубиянов-халявщиков. Персонально для Вас,IGGI, — форум не стол халявных заказов. Для заказов есть ветка «Работа»: http://www.planetaexcel.ru/forum/?PAGE_NAME=list&FID=7
Вот там и уместно ставить задачи. Я сам — дурнее всякого примера! … |
||||
IGGI Пользователь Сообщений: 15 |
#14 16.06.2013 16:30:24
)) Экий Вы, ранимый безнесмен.. Покажите мне грубость в моем посте и если она там есть, я извинюсь. |
||
IGGI Пользователь Сообщений: 15 |
Вот пример) Прикрепленные файлы
|
IGGI Пользователь Сообщений: 15 |
#16 19.06.2013 17:21:33
Для потомков. Вопрос был решен с помощью такого макроса:
Спасибо! |
||||
faridvg Пользователь Сообщений: 33 |
Здравствуйте. А можно изменить этот макрос, чтоб он записывал данные на лист Б подряд и убрать привязку к дате? Изменено: faridvg — 11.07.2017 13:15:49 |
vikttur Пользователь Сообщений: 47199 |
Лучше создать новую тему с названием, отражающим суть задачи. |
ANSWERIVER Пользователь Сообщений: 76 |
#19 12.12.2018 15:18:55 Всем привет, Пожалуйста подскажите, есть часть макроса которая копирует диапазон и вставляет в столбец этот диапазон.
Изменено: ANSWERIVER — 12.12.2018 15:19:37 |
||
Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в VBA Excel. Методы Cut, Copy и PasteSpecial объекта Range, метод Paste объекта Worksheet.
Метод Range.Cut
Range.Cut – это метод, который вырезает объект Range (диапазон ячеек) в буфер обмена или перемещает его в указанное место на рабочем листе.
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен (перемещен) вырезанный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект вырезается в буфер обмена. |
Для вставки на рабочий лист диапазона ячеек, вырезанного в буфер обмена методом Range.Cut, следует использовать метод Worksheet.Paste.
Метод Range.Copy
Range.Copy – это метод, который копирует объект Range (диапазон ячеек) в буфер обмена или в указанное место на рабочем листе.
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен скопированный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект копируется в буфер обмена. |
Метод Worksheet.Paste
Worksheet.Paste – это метод, который вставляет содержимое буфера обмена на рабочий лист.
Синтаксис
Worksheet.Paste (Destination, Link) |
Метод Worksheet.Paste работает как с диапазонами ячеек, вырезанными в буфер обмена методом Range.Cut, так и скопированными в буфер обмена методом Range.Copy.
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон (ячейка), указывающий место вставки содержимого буфера обмена. Если этот параметр не указан, используется текущий выделенный объект. |
Link | Необязательный параметр. Булево значение, которое указывает, устанавливать ли ссылку на источник вставленных данных: True – устанавливать, False – не устанавливать (значение по умолчанию). |
В выражении с методом Worksheet.Paste можно указать только один из параметров: или Destination, или Link.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, форматы, примечания и т.д.), а также для проведения транспонирования и вычислений, используйте метод Range.PasteSpecial (специальная вставка).
Примеры
Вырезание и вставка диапазона одной строкой (перемещение):
Range(«A1:C3»).Cut Range(«E1») |
Вырезание ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Range(«A1:C3»).Cut ActiveSheet.Paste Range(«E1») |
Копирование и вставка диапазона одной строкой:
Range(«A18:C20»).Copy Range(«E18») |
Копирование ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Range(«A18:C20»).Copy ActiveSheet.Paste Range(«E18») |
Копирование одной ячейки и вставка ее данных во все ячейки заданного диапазона:
Range(«A1»).Copy Range(«B1:D10») |
How to copy and paste data using a Macro in Excel. I’ll show you multiple ways to do this, including across worksheets and workbooks.
Sections:
Simple Copy/Paste
Copy Entire Range
Copy between Worksheets
Copy between Workbooks
Notes
Simple Copy/Paste
Range("A1").Copy Range("B1")
This copies cell A1 to cell B1.
Range(«A1»).Copy is the part that copies the cell.
Range(«B1») is the cell where the data will be copied.
This is a simple one line piece of code and it’s very easy to use.
Notice that there is a space between these two parts of the code.
Copy Entire Range
Range("A1:A5").Copy Range("B1:B5")
Range(«A1:A5»).Copy is the part that copies the range.
Range(«B1:B5») is the range where the data will be copied.
You can also write it like this:
Range("A1:A5").Copy Range("B1")
Notice that the range to where you will copy the data has only a reference to cell B1.
You only have to reference the very first cell to which the range will be copied and the entire range will copy in the cells below there.
NOTE: if you do it like this, you may end up overwriting data and Excel will not give you a warning about this; the data will simply be filled down as far as it needs to go to copy the first range.
Copy between Worksheets
Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("B1")
This follows the same pattern as the above examples except that we need to tell the macro from which sheet we want to get the data and to which sheet we want to copy the data.
Sheets(«Sheet1»). is placed in front of the first range and that means to get the data from Sheet1, which is the name of a worksheet in the workbook.
Sheets(«Sheet2»). is placed in front of the range to which we want to copy the data and Sheet2 is the name of the worksheet where the data will be copied.
Copy between Workbooks
Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet3").Range("A1")
Here, we follow the above examples and, this time, add a reference to the workbooks from which we want to get the data and to which we want to place the data.
Workbooks(«Copy and Paste Data using Macro VBA in Excel.xlsm»). is the code that says in which workbook we want to place the data. Copy and Paste Data using Macro VBA in Excel.xlsm is the name of the workbook. In this example I used this for both parts, the workbook from which the data comes and where it goes. This allows you to run this macro within a single workbook and still show you how it works. In a real-world example, the first part contains the name of the workbook where you get the data from and the second contains the name of the workbook where you want to place the data.
Read this tutorial to copy values from another workbook, even if it’s closed.
Notes
All examples in the attached workbook have been commented out. Simply remove the single quote from the line of code you want to test and then run the macro.
Download the attached file to get these examples in Excel.
Similar Content on TeachExcel
Activate or Navigate to a Worksheet using Macros VBA in Excel
Tutorial: Make a particular worksheet visible using a macro in Excel.
This is called activating a wo…
Get the Name of a Worksheet in Macros VBA in Excel
Tutorial: How to get the name of a worksheet in Excel using VBA and Macros and also how to store tha…
Get the Last Row using VBA in Excel
Tutorial:
(file used in the video above)
How to find the last row of data using a Macro/VBA in Exce…
Remove Dashed Lines from Copy Paste VBA in Excel
Tutorial: How to remove the flashing dashes from a copy/paste range using VBA in Excel; this removes…
Copy one range and paste in another range
Tutorial: Below is a macro, just copy and paste it into a module in your workbook and go from there…
Guide to Combine and Consolidate Data in Excel
Tutorial: Guide to combining and consolidating data in Excel. This includes consolidating data from …
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
На чтение 3 мин. Просмотров 51.7k.
Итог: Изучите 3 различных способа копирования и вставки ячеек или диапазонов в Excel с помощью макросов VBA. Это серия из трех частей, также вы сможете скачать файл, содержащий код.
Уровень мастерства: Начинающий
Копировать и вставить: наиболее распространенное действие Excel
Копирование и вставка, вероятно, является одним из самых
распространенных действий в Excel. Это также одна из самых распространенных
задач, которые мы автоматизируем при написании макросов.
Есть несколько различных способов выполнить эту задачу, и устройство записи макросов не всегда дает вам наиболее эффективный код VBA.
В следующих трех видео я объясняю:
- Самый эффективный метод для простого копирования
и вставки в VBA. - Самый простой способ вставить значения.
- Как использовать метод PasteSpecial для других
типов вставок.
Видео № 1: Простой метод «Копировать-вставить»
Видео лучше всего просматривать в полноэкранном HD.
Sub Примеры_копирования_диапазона() 'Используйте метод Range.Copy для простого копирования / вставки 'Метод Range.Copy - копирование и вставка с 1 строкой Range("A1").Copy Range("C1") Range("A1:A3").Copy Range("D1:D3") Range("A1:A3").Copy Range("D1") 'Range.Copy с одного листа на другой Worksheets("Лист1").Range("A1").Copy Worksheets("Лист2").Range("A1") 'Range.Copy с одного файла (на другой Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Copy _ Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1") End Sub
Видео № 2: Простой способ вставить значения
Sub Копируем_только_значения() 'Установите значения ячеек равными другим, чтобы вставить значения 'Устанавливает равенство одного диапазона другому Range("C1").Value = Range("A1").Value Range("D1:D3").Value = Range("A1:A3").Value 'Равенство значений между листами Worksheets("Лист1").Range("A1").Value = Worksheets("Лист2").Range("A1").Value 'Равенство значений между книгами Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").Value = _ Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Value End Sub
Видео № 3: Метод PasteSpecial
Sub Копируем_с_помощью_специальной_вставки() 'Используйте метод Range.PasteSpecial для выбора типа вставки 'Копируем и вставляем через СпецВставку Range("A1").Copy Range("A5").PasteSpecial Paste:=xlPasteFormats 'Используем спецвставку между листами Worksheets("Лист1").Range("A2").Copy Worksheets("Лист2").Range("A2").PasteSpecial Paste:=xlPasteFormulas 'Используем спецвставку между файлами Workbooks("План.xlsx").Worksheets("Лист1").Range("A3").Copy Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").PasteSpecial Paste:=xlPasteFormats 'Убираем "бегающих муравьёв" после копирования (очищаем буфер обмена) Application.CutCopyMode = False End Sub
Вставить данные ниже последней заполненной строки
Один из самых распространенных вопросов, которые я получаю о копировании и вставке с помощью VBA: «Как мне вставить данные в конец таблицы? «
Сначала нужно найти последнюю заполненную строку данных, а затем скопировать и вставить ниже неё.
Переходите по ссылке, чтобы научиться 3 способам поиска последней заполненной ячейки
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
1 |
|
Excel Макрос для копирования информации с одного листа на другой по определенным условиям31.05.2019, 13:30. Показов 44379. Ответов 23
Доброго времени суток, Гуру excel!!! Помогите написать макрос который будет копировать нужные данные по определенным условиям с одного листа и вставлять на другой, если конечно это возможно… Файл с примером прилагаю в нем все цветами выделено что копировать и куда вставлять. заранее спасибо!!!
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 13:31 |
2 |
А файл не приложили )
0 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 13:32 [ТС] |
3 |
ArtNord, сейчас минутку вот файл
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 13:43 |
4 |
Да, вижу, а что куда и по какому условию.
0 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 13:45 [ТС] |
5 |
то что желтым выделено это условия, а синим это нужно перенести на лист 2
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 14:07 |
6 |
Сообщение было отмечено Александр_80 как решение РешениеПроверьте
1 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 14:08 |
7 |
Александр_80, проверьте
0 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 14:21 [ТС] |
8 |
ArtNord, ДА ВСЕ РАБОТАЕТ ЭТО ПРОСТО МАГИЯ КАКАЯ ТО , ВОТ ТОЛЬКО Я ЗАБЫЛ УКАЗАТЬ НА КОЛОНКУ ДЮЙМЫ, МОЖНО ИХ ТОЖЕ КОПИРОВАТЬ? ПО ТЕМ ЖЕ УСЛОВИЯМ
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 14:25 |
9 |
Добавил
1 |
Александр_80 0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
||||
31.05.2019, 14:46 [ТС] |
10 |
|||
ArtNord, Вы просто супер!!!! Спасибо огромное вам!!!!! Еще одна просьба, вы не могли бы разъяснить по вашему макросу, что какая команда делает?
0 |
ArtNord 370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
||||
31.05.2019, 14:57 |
11 |
|||
Спасибо за оценку!
1 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 15:01 [ТС] |
12 |
ArtNord, вам спасибо за помощь!!! на самом деле в этой таблице более 50000 строк и она с каждым днем становится больше. Макрос будет работать на все эти строки?
0 |
ArtNord 370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
||||||||
31.05.2019, 15:01 |
13 |
|||||||
Да, вот эта строчка как раз и опреляет сколько сейчас записей:
1 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 15:04 [ТС] |
14 |
ArtNord, а если копировать нужно не на лист 2 а на другой лист который находится в другой книге, что нужно сделать?
0 |
ArtNord 370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
||||
31.05.2019, 15:06 |
15 |
|||
Если книга эта открыта то:
0 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 15:12 [ТС] |
16 |
простите меня я такой овощь в этом деле, я не пойму куда мне нужно эту строчку вставить?
0 |
ArtNord 370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
||||||||||||
31.05.2019, 15:15 |
17 |
|||||||||||
Где присваиваете значения:
Заменить на:
Добавлено через 1 минуту
0 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 15:16 [ТС] |
18 |
ArtNord, Вы просто супер!!!! Я если честно даже не ожидал, что мне так сразу тут помогут!!! Дай вам бог здоровья!!!
0 |
370 / 268 / 93 Регистрация: 18.11.2015 Сообщений: 990 |
|
31.05.2019, 15:17 |
19 |
Спасибо! Взаимно! Просто коротаю время до конца рабочего дня ))))
1 |
0 / 0 / 0 Регистрация: 02.12.2018 Сообщений: 99 |
|
31.05.2019, 15:23 [ТС] |
20 |
ArtNord, нет не просто коротаете, вы людям помогаете!!!! Еще раз огромное спасибо ВАМ!!!! Добавлено через 4 минуты
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
31.05.2019, 15:23 |
20 |