Формирование столбца из данных других столбцов

Программирование на Visual Basic for Applications
Domk
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2008 (Ср) 17:14

Формирование столбца из данных других столбцов

Сообщение Domk » 02.12.2008 (Вт) 11:07

Здравствуйте глубокоуважаемые маги и гуру!
Каждый день в Excel выполняю работу, которую, как мне кажется можно упростить несложным макросом, а именно:
Имеются несколько столбцов с данными, которые я переношу в определенный столбец. Все столбцы абсолютно идентичны по структуре и находятся в пределах одного листа.
"новый" формируемый столбец можно пометить единичкой, допустим в пятой строке, чтобы макрос понял, в какой столбец переносить данные.
далее: в ячейка одного из исходных столбцов копируется и переносятся в "новый" столбец в ту же строку, вставляясь туда "как формула", после чего курсор возвращается обратно и очищает ячейку как Delete.

Помогите пожалуйста! Заранее благодарен!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Формирование столбца из данных других столбцов

Сообщение Денис » 02.12.2008 (Вт) 11:25

В 2003 году у меня возникла точно такая проблема: автоматизировать работу с листом. В отличие от тебя у меня не было ни интернета, ни даже справки. Я решил проблему так: включил запись макроса, сделал все требуемые действия. Остановил запись. Открыл бейсик и проанализировал полученный код. На его основе построил свой макрос с циклами, переменными и т.п.
Попробуй.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Domk
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2008 (Ср) 17:14

Re: Формирование столбца из данных других столбцов

Сообщение Domk » 02.12.2008 (Вт) 11:35

Конечно, я бы так и сделал, но как объяснить макросу в КАКОЙ столбец нужно копировать? Он каждый день разный, для этого я и хотел пометить его единицей...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Формирование столбца из данных других столбцов

Сообщение iGrok » 02.12.2008 (Вт) 12:30

Domk писал(а):Конечно, я бы так и сделал, но как объяснить макросу в КАКОЙ столбец нужно копировать? Он каждый день разный, для этого я и хотел пометить его единицей...

Выбери ряд, в котором будешь ставить пометки.
Потом в макросе циклом перебирай WorkSheet.Cells() с этим номером ряда и счётчиком цикла в роли номера столбца.
Где увидишь в Cells.Text свою единичку - туда и копируй столбец.

Только для цикла лучше ограничение поставить. Чтобы не получилось, что будучи запущенным без единички в одном из столбцов, он будет перебирать все ячейки (256 в ширину, вроде).
label:
cli
jmp label

Domk
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2008 (Ср) 17:14

Re: Формирование столбца из данных других столбцов

Сообщение Domk » 02.12.2008 (Вт) 12:47

Эх, ребята, для экономиста это просто непостижимо :)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Формирование столбца из данных других столбцов

Сообщение iGrok » 02.12.2008 (Вт) 13:10

Ок. Можно проще. )

Сделай для начала то, что посоветовал Денис.
Если твои действия записать, открыть получившийся макрос и немного над ним подумать, то в итоге у тебя должен получиться макрос, копирующий всё, что тебе нужно в какой-то один столбец.
Замени номер этого какого-то одного столбца на переменную. К примеру "CurColumn" а её значение в самом начале макроса запроси у пользователя при помощи:
Код: Выделить всё
CurColumn = Val(InputBox("Введите номер столбца"))
'С последующей проверкой на нажатие отмены, или "кривой" ввод.
If CurColumn = 0 Then Exit Sub


В итоге, при выполнении макрос спросит тебя, куда копировать, и всё сделает. Это чтобы единички не искать. =)
label:
cli
jmp label


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 84

    TopList