![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 28
|
![]()
Добрый день. Я столкнулась с макросами в excel впервые. Помогите пжлста. Мне нужно с помощью макроса организовать поиск, если первичный ключ составной, т.е. по двум колонкам (колонка A - номер id, колонка B - филиал). И скопировать значения для соответствующего id и филиала на другой лист. Чтобы было понятнее, прикладываю файл: на листе "Итог" для всех компаний по номеру и филиалу надо найти такие же компании на листе "Обороты" и "Ф1". И скопировать соответствующие значения из листа "Обороты" на лист "Итог" в колонки D и E. Аналогично с листом "Ф1", только здесь надо скопировать со строки 23 "итог по разделу 2" значение для соответствующей компании. Спасибо за помощь.
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 28
|
![]()
уважаемые программисты,
помогите, пожалуйста, понять, как сделать правильно. В моем макросе Sub Copy_data_from_oborot() Dim n, m, k, g, h As Integer Dim sl, sll As String n = Sheets("Итог").UsedRange.Rows.Count m = Sheets("обороты").UsedRange.Rows.Co unt h = 0 For g = 4 To n sl = Replace(Sheets("Итог").Cells(g, 1) & Sheets("Итог").Cells(g, 2), " ", "") For k = 2 To m sll = Replace(Sheets("обороты").Cells(k, 1) & Sheets("обороты").Cells(k, 2), " ", "") If sl = sll Then Sheets("Итог").Cells(4 + h, 4) = Sheets("обороты").Cells(k, 6) Sheets("Итог").Cells(4 + h, 5) = Sheets("обороты").Cells(k, 5) h = h + 1 Exit For End If Next Next End Sub значения на лист Итог подставляются подряд (h = h + 1) и возникает ситуация, что если соответствующей компании не найдено на листе "обороты", данные копируются уже не правильно (смещаясь). Пробовала связать и с именем, но проблема все равно возникает если нет вообще нужной строки на листе Обороты. Как можно исправить эту проблему? Буду очень признательна за любую помощь. Я впервые столкнулась с vba. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
![]() Код:
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 12.01.2010 в 14:32. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 28
|
![]()
doober, спасибо огромное.
но почему-то для двух компаний данные не копируются на "итог", если в "оборотах" они есть: 1270 мск ООО "..." (значения на листе "Обороты" 5643*442,63 5705*753,42) и 1274 мск ООО "компания "..." (значения на листе "Обороты" 31553 835,60 34255 678,17). В чем может быть причина? Огромное-огромное тебе спасибо за код!!! Последний раз редактировалось EducatedFool; 25.01.2010 в 16:13. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
![]()
Не знаю как у Вас но в файле нет таких на листе обороты
после 1250 идет 1436 Список отсортировал предварительно,чудес не бывает
Анализ,обработка данных Недорого
Последний раз редактировалось EducatedFool; 25.01.2010 в 16:14. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Позволю себе небольшое замечание (уточнение).
Если ID уникальны, то зачем проверять соответствие по филиалу? А если один и тот же ID может быть в разных филиалах, то предложенный код от doober будет (может) пропускать совпадения, т.к. поиск осуществляется только до 1-го совпадения. В зависимости от ответа автора темы на этот вопрос, можно либо упростить код, либо потребуется его доработка.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#7 | ||
Пользователь
Регистрация: 12.01.2010
Сообщений: 28
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Я не могу править код doober. Это его ителлектуальная собственность. Могу сделать по-своему.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 28
|
![]()
SAS888, буду очень признательна!
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Посмотрите пример во вложении.
Кстати, поиск не зависит от того, в каком формате данные (текст или число).
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 14.01.2010 в 04:37. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переход от ссылок к значениям! | mephist | Microsoft Office Excel | 5 | 10.07.2009 16:01 |
Запрос к двум базам данных в Delphi 6 | Demonk | БД в Delphi | 8 | 29.06.2009 12:48 |
суммирование данных по двум критериям | misht | Microsoft Office Excel | 10 | 31.03.2009 12:58 |
Сортировка одной БД по значениям другой | Кот из Лета | БД в Delphi | 4 | 28.12.2007 13:35 |
Нарисовать Ellipse по значениям из... | Apollo_13 | Общие вопросы Delphi | 3 | 17.06.2007 02:53 |