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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 00:30   #1
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
Вопрос Скопировать значение из определённой ячейки ТЕКУЩЕЙ СТРОКИ в определённую ячейку другого листа

Здравствуйте! Так как только начинаю осваивать excel, есть вопрос, на который, наверняка, вы сможете мне помочь найти ответ.

Требуется скопировать значение из определённой ячейки ТЕКУЩЕЙ СТРОКИ в определённую ячейку другого листа.

Пробовал писать макрос и смотреть код - идёт привязка к конкретной строке (откуда копируем). А надо так: скопировали значение из ячейки текущей строки. Потом вручную переместились курсором НА СТРОКУ НИЖЕ и скопировали значение из ячейки, опять вставили это на другой лист.
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 00:45   #2
Slavik
Форумчанин
 
Регистрация: 23.11.2008
Сообщений: 237
По умолчанию

В екселе есть функция называеться "автозаполнение", может вам луше ей воспользоваться?
Если мой ответ вам понравился, поставьте позитивный отзыв
Slavik вне форума Ответить с цитированием
Старый 19.05.2009, 00:56   #3
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Slavik Посмотреть сообщение
В екселе есть функция называеться "автозаполнение", может вам луше ей воспользоваться?
Нет, речь идёт не об этом. Нужно данные из одного листа скопировать в другой лист.
Если точнее - первый лист из себя представляет огромную таблицу. Наша задача - выбрать из текущей строки (там, где стоит курсор, не мыши) данные из определённых ячеек и вставить их на другой лист в строго определённые ячейки, который из себя представляет что-то вроде красивой формы, готовой для печати.
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 01:35   #4
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Пока пошёл по такому пути (отрывок из кода):

'Копируем номер карточки
Sheets("Пожары").Select
ActiveCell.Copy
Sheets("Данные для карточки").Select
Range("B2").Select
ActiveSheet.Paste

'Копируем дату пожара
Sheets("Пожары").Select
ActiveCell.Offset(0, 1).Copy
Sheets("Данные для карточки").Select
Range("B3").Select
ActiveSheet.Paste

Что напрягает, что ячейка копируется целиком, а надо только содержимое ячейки скопировать. Что подскажете?
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 01:47   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

'Копируем дату пожара
Sheets("Данные для карточки").Range("B3").Value = Sheets("Пожары").ActiveCell.Offset( 0, 1).Value
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2009, 01:50   #6
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
'Копируем дату пожара
Sheets("Данные для карточки").Range("B3").Value = Sheets("Пожары").ActiveCell.Offset( 0, 1).Value
Игорь, спасибо Большое! Обязательно оптимизирую код. Главное сейчас - чтобы механизм заработал. А он вроде как работает, урра! Теперя, главное, разобраться, как сделать так, чтобы копировалась ячейка без форматирования (только значение).
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 01:55   #7
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Павел-812 Посмотреть сообщение
Игорь, спасибо Большое! Обязательно оптимизирую код. Главное сейчас - чтобы механизм заработал. А он вроде как работает, урра! Теперя, главное, разобраться, как сделать так, чтобы копировалась ячейка без форматирования (только значение).

Ээээ. Рано поспешил. Появилась ошибка при использовании выражения
Sheets("Данные для карточки").Range("B3").Value = Sheets("Пожары").ActiveCell.Offset( 0, 1).Value

"Объект не поддерживает это свойство или метод" (перевёл с инглиша).
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 02:35   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sheets("Данные для карточки").Range("B3").Value = ActiveCell.next
Это если надо скопировать содержимое ячейки, находящейся справа от выделенной.

А если надо копировать содержимое из ячейки определённого столбца (независимо от того, в каком столбце расположена выделенная ячейка), то используйте такой код:
Код:
Sheets("Данные для карточки").Range("B3").Value = ActiveCell.entirerow.cells(3)

--------- вдруг кому пригодится --------------
Цитата:
Надстройка LOOKUP предназначена для сравнения и подстановки значений в таблицах Excel.

Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
надстройка «Lookup» поможет сделать это нажатием одной кнопки.


В настройках программы можно задать:
  • где искать сравниваемые файлы (использовать уже открытый файл, загружать файл по заданному пути, или же выводить диалоговое окно выбора файла)
  • с каких листов брать данные (варианты: активный лист, лист с заданным номером или названием)
  • какие столбцы сравнивать (можно задать несколько столбцов)
  • значения каких столбцов надо копировать в найденные строки (также можно указать несколько столбцов)

Скачать надстройку для сравнения таблиц Excel и копирования данных из одинаковых строк


Последний раз редактировалось EducatedFool; 30.09.2013 в 09:38.
EducatedFool вне форума Ответить с цитированием
Старый 19.05.2009, 03:04   #9
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

У меня всё-всё-всё получилось! Я достиг цели, не жалею потраченных сил и времени. Теперь моя повседневная работа будет продвигаться гораздо быстрее! Ура! Всем спасибо за советы!

Единственное, что осталось для косметических штрихов - сделать так, чтобы ячейки при копировании теряли форматировании (точнее - только оформление жирным шрифтом, выравнивание, размер шрифта, границы).

И ещё хотелось бы сделать так, чтобы макрос проверял при старте, что первоначально курсор находится в нужном столбце, а то ведь если не в том месте будет стоять, то данные (мы же смещение используем) будут неверны.

В общем, хочется изваять код, который проверял, находится-ли курсор в 4-м столбце. Если нет - выдавал информационное окошко с просьбой поставить курсор куда надо и останавливал выполнение макроса.

Или по-другому сделать - чтобы макрос сам ставил курсор в 4-й столбец ТЕКУЩЕЙ строки. Это выполнимо?
Павел-812 вне форума Ответить с цитированием
Старый 19.05.2009, 03:10   #10
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Хочу похвастаться результатами. ))
На скриншотах исходная таблица с данными и конечный продукт, подготовленный для печати.
А на третьем изображении как раз промежуточный лист, куда заносим данные из таблицы при помощи макрокода.
Изображения
Тип файла: jpg рисунок01.jpg (66.5 Кб, 271 просмотров)
Тип файла: jpg рисунок02.jpg (71.2 Кб, 224 просмотров)
Тип файла: jpg рисунок03.jpg (39.6 Кб, 222 просмотров)

Последний раз редактировалось Павел-812; 19.05.2009 в 03:23.
Павел-812 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистить значения после определённой ячейки Sorro Microsoft Office Excel 1 08.05.2009 12:03
Трёхуровневый выпадающий список по выборке с другого листа Constantinich Microsoft Office Excel 6 06.04.2009 11:28
Значение ячейки по названию листа VadimSh Microsoft Office Excel 4 02.12.2008 15:29
с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких) global Microsoft Office Excel 6 27.11.2008 17:43
Автоматическое заполнение данных из другого листа usgaz@list.ru Microsoft Office Excel 8 17.10.2008 10:41