Поиск и перенос данных

Программирование на Visual Basic for Applications
ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Поиск и перенос данных

Сообщение ruvster » 20.10.2005 (Чт) 15:42

На первом листе в колонке «а» находятся наименования, в колонке «в» цифры. Например:
Вася 8
Петя 7
Коля 5
На втором листе наименования. Например:
Маша
Даша
Глаша

Задача:

Поиск, например, «Васи» и перенос (копирование) «8», например Глаше.
т.е. на втором листе должно быть:
Глаша 8
И т.д.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 15:45

Есть такая функция самого Excel, называется ВПР (она же VLOOKUP). Очень подходит для этого случая, и никакие макросы не нужны - нужно только задать соответствие Вась Глашам.
Быть... или не быть. Вот. В чём вопрос?

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 16:16

Нет. Нужен макрос

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 16:25

Зашибись. Всегда радовали такие ответы.

Ну тогда в чем вопрос? :twisted:
Быть... или не быть. Вот. В чём вопрос?

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 16:59

Вопрос прост. Я предполагаю, что нужен такой алгоритм:
1. Найти "Вася" и выделить эту ячейку.
2. ActiveCell.Offset(0, 1).Copy....
Вот тут и проблема.
Куда копировать то?
т.е. Надо выделить ячейку ActiveCell.Offset(0, 1) от "Глаши" туда и копировать.
Понимаю, что это все я тут по чайниковски усложнил.
Так вот и вопрос:
Как это примерно должно выглядеть в коде?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 17:16

Код: Выделить всё
worksheets(1).columns(1).find("Вася",,xlValues,xlWhole).offset(0,1).copy worksheets(2).columns(1).find("Глаша",,xlValues,xlWhole).offset(0,1)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 17:47

Спасибо. Все гениальное просто.
Дополнительный вопрос.
Что делать если Глаша будет стоять не в первом столбце?
Спасибо.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 17:49

worksheets(2).columns(x).find("Глаша"...)

где x - номер колонки, около которой стоит Глаша.
Быть... или не быть. Вот. В чём вопрос?

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 17:54

Да, да.
Прошу прощенье, хрень сморозил.

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 18:17

Еще вопрос.
Что если Глаше нужна сумма от Васи и Пети
Спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 18:21

Гнать Глашу в шею тогда.


А что, сам не можешь на основании приведённого кода?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 18:29

Пробовал:
worksheets(1).columns(1).find("Вася",,xlValues,xlWhole).offset(0,1)+ worksheets(2).columns(1).find("Глаша",,xlValues,xlWhole).offset(0,1)).copy...
Не пролезает чегой-то.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 18:32

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

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 18:43

Да я уже бошку себе свернул и, знаю, что все окажется гороздо проще, чем я сейчас думаю, но будьте людьми напишите код. Не сообразить мне чтой-то никак.
Спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 18:52

worksheets(2).columns(1).find("Глаша",,xlValues,xlWhole).offset(0,1).value = worksheets(1).columns(1).find("Вася",,xlValues,xlWhole).offset(0,1).value + worksheets(1).columns(1).find("Петя",,xlValues,xlWhole).offset(0,1).value


Можно без ".value".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ruvster
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 18.08.2005 (Чт) 19:32

Сообщение ruvster » 20.10.2005 (Чт) 19:08

Спасибо.
Самое-то печальное, что я так пытался сделать. И почему-то выдавало ошибку. Видать где-то просто опечатался.
Еще раз спасибо.


Вернуться в VBA

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

Сейчас этот форум просматривают: Yandex-бот и гости: 30

    TopList  
cron