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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 19:45   #1
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию перенос столбцов из одной закладки в другую

Как все понимают если бы у самого хватало знаний сделал, а так слёзно прошу вас.
Сделать нужно следующее, предположим есть два шита в одном есть данные, нужно банально предположим взять столбец А перенсти на другой шит в столбец начиная с ячейки В6 и ниже.
wildvad вне форума Ответить с цитированием
Старый 12.03.2009, 05:21   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub БанальныйПереносСтолбцаА()
    Лист1.UsedRange.EntireRow.Columns(1).Copy Лист2.[b6]
    ' или так:
    Worksheets("НазваниеЛиста1").UsedRange.EntireRow.Columns(1).Copy Worksheets("НазваниеЛиста2").[b6]
    ' ну а можно так:
    Worksheets("НазваниеЛиста1").[a1:a1500].Copy Worksheets("НазваниеЛиста2").[b6]
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 12.03.2009, 06:10   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А зачем .EntireRow ?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 12.03.2009, 06:39   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А зачем .EntireRow ?
Дело в том, что функция Лист1.UsedRange может возвратить диапазон [c2:e8] (в случае, если столбец А пустой), и в этом случае код
Лист1.UsedRange.Columns(1).Copy Лист2.[b6] скопирует столбец С вместо A.
Использование же .EntireRow гарантирует, что будет скопирована используемая часть именно столбца A.
EducatedFool вне форума Ответить с цитированием
Старый 12.03.2009, 08:34   #5
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
Смех

первый вариант работает а вот второй немного гонит. третий не пробовал =)
Как говорится нужно будет, ещё немного помощи =)
Предположим до переноса столбцов нам нужно будет их сравнить по признаку кто больше тот и заменяет данные,если же даные больше остаётся всё по прежнему.
wildvad вне форума Ответить с цитированием
Старый 12.03.2009, 08:56   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Предположим до переноса столбцов нам нужно будет их сравнить по признаку кто больше тот и заменяет данные
Давайте без предположений...
Прикрепляете файл, и подробно описываете задание (что и куда надо скопировать, при каких условиях, и т.п.)
Так будет намного быстрее.
EducatedFool вне форума Ответить с цитированием
Старый 12.03.2009, 23:15   #7
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Что бы не создавать темы - напишу сюда.

Значит я решил себе облегчить жизнь и написать программный код, который бы сортировал данные и подсчитывал кол-во записей.

Есть 40 000 строк с инфой, последний столбец каждой строки содержит дату типа 01.01.96

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

Теперь вопросы:

1) как создать лист?
2) как скопировать нужную строку на другой лист зная адресс ячейки в этой строке?
ну и вроде все

Последний раз редактировалось Д'якон; 13.03.2009 в 00:37.
Д'якон вне форума Ответить с цитированием
Старый 13.03.2009, 00:36   #8
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

как сравнить cell.Value с датой? Ругается на несовпадение типов. Пробовал через CDate, Format, DateValue все до одного места
Д'якон вне форума Ответить с цитированием
Старый 13.03.2009, 04:59   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
1) как создать лист?
Например, создаем новый лист и сразу присваиваем имя "Temp".
Код:
Sheets.Add.Name = "Temp"
На форуме есть "куча" примеров. Поищите. Но так или иначе, можно либо создать лист с именем, затем переместить его в нужное место, либо создать лист в нужном месте, а затем присвоить ему имя. Все равно два действия.
Цитата:
2) как скопировать нужную строку на другой лист зная адресс ячейки в этой строке?
Пусть нужно скопировать строку активного листа, содержащую ячейку (в примере "D5") в лист "Temp", в строку 10:
Код:
[D5].EntireRow.Copy Sheets("Temp").Rows(10)
Если же наоборот, нужно скопировать строку 10 активного листа в лист "Temp", в строку, содержащую ячейку (в примере "D5"), то так:
Код:
Rows(10).Copy Sheets("Temp").Rows([D5].Row)
Если копировать требуется из неактивного листа, то перед копируемой строкой добавьте ссылку на этот лист.
Цитата:
как сравнить cell.Value с датой?
А какой формат у сравниваемой ячейки? Если не "дата", то в каком виде эта дата записана? Все операторы преобразования форматов подразумевают вполне конкретные аргументы. Приведите Ваш "проблемный" пример. В общем виде, ничего преобразовывать не нужно. Например, сравним содержимое ячейки "A1" с текущей датой:
Код:
If [A1] > Date Then MsgBox "Yes" Else MsgBox "No"
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 13.03.2009 в 05:30.
SAS888 вне форума Ответить с цитированием
Старый 16.03.2009, 06:50   #10
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию

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

что то типо такого Worksheets("Sheet2").[a3:a1500].Copy Worksheets("Sheet1").[a4]

Этот скрипт работает немного криво, т.е. когда он выполняется он по чему то копирует первый столбец два раза =(

Последний раз редактировалось wildvad; 16.03.2009 в 06:57.
wildvad вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из одной процедуры в другую... Vremya-Dengy Общие вопросы Delphi 10 09.03.2009 23:51
перенос на другую ПК проги sergey2501 БД в Delphi 1 26.10.2008 20:07
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57
Конвертация одной БД в другую Старовъръ БД в Delphi 2 19.08.2008 12:26
Перенос данных из одной книги со многих листов в другую gavrylyuk Microsoft Office Excel 34 20.07.2008 21:39