|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.05.2010, 11:35 | #1 |
Новичок
Джуниор
Регистрация: 26.05.2010
Сообщений: 2
|
поиск по диапазону и подстановка значения в зависимости от результата
яблоко | | яблоко | ID1
яблоко | | груша | ID2 яблоко | | слива | ID3 Груша | | абрикос | ID4 Груша | | Слива | | Абрикос | | имеется примерно вот такого вида табличка. задача состоит в том, чтобы ID объектов (яблоки, груши и т.п.), которые обозначены в 4-м столбце подставить во второй собственно в соответствии с 1м столбцом. моя идея заключается в следующем макросе (правда это только самое начало), который проходит от первой ячейке к последней, и последовательно сравнивает. но он срабатывает только на 1ю ячейку (что и понятно, только там соответствие), так вот затык в том: как сделать так чтобы при проходе он делал поиск по всему столбцу C и при нахождении вставлял в столбец B айдишник в соответствии со столбцом D что написал вот (в VBA пока новичок совсем): Код:
|
26.05.2010, 12:32 | #2 |
Пользователь
Регистрация: 26.05.2010
Сообщений: 77
|
Ваш вариант работать будет но немного долго
Предлагаю поступить так:
Примерно так выглядит таблица в Excel кол A| кол B| кол C| кол D 1| яблоко | | яблоко | |ID1 2| яблоко | | груша | | ID2 3| яблоко | | слива | |ID3 4| Груша | | абрикос | |ID4 5| Груша | | 6| Слива | | 7| Абрикос| | Дале сам макрос: Sub Найти_совпадения() Dim x As Variant, y As Variant SravnenyeDiap As Variant Range("A1:A7").Select ' Выделяем диапазон для сравнения ' Назначаем переменной SravnenyeDiap диапазон, с которым нужно сравнить выделенный диапазон. Set SravnenyeDiap = Range("C1:C5") ' Каждую выделенную ячейку сравниваем с каждой ячейкой из диапазона SravnenyeDiap. For Each x In Selection For Each y In SravnenyeDiap If x = y Then x.Offset(0, 1) = y.Offset(0, 1) ' Устанавливаем значения ID Next y Next x End Sub
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
|
26.05.2010, 13:23 | #3 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
или так:
Код:
Нет нерешаемых задач - есть недостаток времени и данных!
|
26.05.2010, 13:45 | #4 |
Новичок
Джуниор
Регистрация: 26.05.2010
Сообщений: 2
|
Спасибо огромное, очень помогло
|
06.12.2011, 16:45 | #5 |
Пользователь
Регистрация: 02.04.2011
Сообщений: 11
|
Подскажите пожалуйста, как адаптировать этот код для проверки диапазонов двух листов, внутри одной книги, и чтобы макрос копировал значения не одной ячейки, а нескольких ячеек, указанных через запятую. Я VBA незнаю совсем, поэтому ищу инфу везде. Неоставьте мой вопрос без внимания, заранее спасибо
|
06.12.2011, 17:48 | #6 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
> Не оставьте мой вопрос без внимания
Трудно это сделать - нет примера.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
06.12.2011, 17:56 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Аналогично.
внимание уделил. помочь ничем не могу, я знаю VBA, но не знаю какие диапазоны проверять, на предмет чего их проверять, какие ячейки копировать...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
06.12.2011, 21:41 | #8 |
Пользователь
Регистрация: 02.04.2011
Сообщений: 11
|
Прикрепил файл, формата XLSM (офис 2007, файл с поддержкой макросов). В книге есть минимум 2 листа, в одном производится расчет, в другом данные. Поиск происходит по гар.№, и если номер в листе ак4 и ТЭП_ак4 совпадает, то макрос должен скопировать значения из ТЭПа(желтые колонки) в ак4(синие колонки). Не могу настроить чтобы макрос цеплялся за диапазон другого листа, и чтобы значения сразу нескольких ячеек копировал.... В идеал еще должен быть второй макрос, который будет проверять гаражные номера на обоих листах, и если какой-то из номеров есть в тэп но нет в ак4, он должен меня оповестить каким-то образом, либо вывести отдельно на лист перечень гаражный, либо во всплывающем окне ошибки указать "Гар № 1234 отсутствует"
Последний раз редактировалось Bumek; 06.12.2011 в 21:44. |
07.12.2011, 17:15 | #9 |
Пользователь
Регистрация: 02.04.2011
Сообщений: 11
|
Сегодня нашел на работе неточность в коде... если в обрабатываемом диапазоне находится 40, а в диапазоне с исходными данными 4055, то значение от 4055, он скопирует к 40...Как заменить строку
Код:
|
07.12.2011, 17:21 | #10 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Попробуйте так
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 | LeX2009 | БД в Delphi | 14 | 21.05.2010 16:49 |
Подстановка значения переменной как поле записи | Noktikus | Общие вопросы Delphi | 2 | 17.04.2010 18:01 |
Автоматическая подстановка значения. | Baloo007 | Microsoft Office Excel | 2 | 08.07.2009 10:37 |
Подстановка значения в переменную из текстового файла. | Niodar | Общие вопросы Delphi | 2 | 22.03.2009 19:34 |
Автоматическая подстановка последнего значения | d_yure | Microsoft Office Excel | 9 | 28.12.2007 08:30 |