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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 00:41   #1
a.alexandr05
 
Регистрация: 12.01.2013
Сообщений: 4
По умолчанию Перенос данных из одного листа на другой

Огромная просьба помочь!!!
Задача: Нужно при нажатии кнопки скопировать данные из столбца А отмеченные "галочкой" -это столбец С листа1, в столбец А листа 2. При этом вставляемые данные на листе2 не должны стирать уже имеющиеся (т.е должны вставляться ниже). Если копируемое значение уже есть на листе2 в столбце А оно не должно переноситься.
Остальные значения я смогу скопировать с помощью ВПР.

Подобная тема уже была на вашем форуме , но там данные стираются при переносе новых.
Вложения
Тип файла: rar Книга1.rar (25.8 Кб, 47 просмотров)
a.alexandr05 вне форума Ответить с цитированием
Старый 13.01.2013, 02:49   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

выполняется с лист1:
Код:
Sub Copy12()
  Dim r1 As Long, r2 As Long
  With Worksheets("Ëèñò2")
    r1 = Cells(Rows.Count, 1).End(xlUp).Row - 1
    r2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(2, 1).Resize(r1, 12).Copy Destination:=.Cells(r2, 1)
    .Cells(r2, 3).Resize(r1 - 1, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .[a1].Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 12).RemoveDuplicates Columns:=1, Header:=xlYes
    .Columns(3).ClearContents
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.01.2013, 12:06   #3
a.alexandr05
 
Регистрация: 12.01.2013
Сообщений: 4
По умолчанию

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

И ещё один вопрос. Вы сделали, так что бы этот макрос копировал все столбцы в отмеченной строке, но мне необходимы не все столбцы с листа 1 на листе 2. Каждый раз удалять не нужные столбцы не очень удобно.
Возможно ли в макросе указать определенные столбцы и как это можно сделать? Либо сделать так, что бы копировался только столбец А.
Вложения
Тип файла: rar Книга1.rar (25.8 Кб, 32 просмотров)
a.alexandr05 вне форума Ответить с цитированием
Старый 13.01.2013, 12:36   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

с последней строкой - случилась ошибка...
копируется только колонка А:
Код:
Sub Copy12()
 Dim r1 As Long, r2 As Long
  With Worksheets("Ëèñò2")
    r1 = Cells(Rows.Count, 1).End(xlUp).Row - 1
    r2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(2, 1).Resize(r1, 3).Copy Destination:=.Cells(r2, 1)
    .Cells(r2, 3).Resize(r1, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .[a1].Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 12).RemoveDuplicates Columns:=1, Header:=xlYes
    .Cells(r2, 2).Resize(r1, 2).ClearContents
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.01.2013, 22:22   #5
a.alexandr05
 
Регистрация: 12.01.2013
Сообщений: 4
По умолчанию

Может я что делаю не так, поставил ваш макрос, копирует только столбец А (это все хорошо), но копирует только в пределах 15 строк, если продолжить дальше таблицу ничего не копирует.
a.alexandr05 вне форума Ответить с цитированием
Старый 14.01.2013, 09:58   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

попробуйте так:

Код:
Sub Copy12()
 Dim R1 As Range, R2 As Range
  With Worksheets("Ëèñò2")
    Set R1 = Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeConstants).EntireRow
    Set R2 = .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).EntireRow
    Intersect(R1, [A:B]).Copy R2.Cells(1, 1)
    Set R2 = R2.Resize(R1.Rows.Count)
    .[a1].Resize(.Cells(Rows.Count, 1).End(xlUp).Row).EntireRow.RemoveDuplicates Columns:=1, Header:=xlYes
    Intersect(R1, [C:C]).ClearContents
  End With
End Sub
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.01.2013, 21:51   #7
a.alexandr05
 
Регистрация: 12.01.2013
Сообщений: 4
По умолчанию

Спасибо!!!! Всё работает!
a.alexandr05 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных с одного листа на другой 1k0naMyst Microsoft Office Excel 0 17.10.2012 11:01
перенос данных из одного листа в другой Enkoff Microsoft Office Excel 2 10.06.2011 13:32
Перенос данных с одного листа на другой baster128 Microsoft Office Excel 3 05.01.2011 16:35
Перенос данных из одного листа в другой 4istii_listo4ek Microsoft Office Excel 0 15.10.2010 16:06
Перенос данных из одного листа в другой Светланка85 Microsoft Office Excel 2 07.09.2009 09:18