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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2013, 22:09   #1
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию Ошибка в макросе сравнения таблиц

Уважаемые форумчане! Помогите исправить ошибку в макросе. На основе ваших примеров составил, свой макрос для своих задач, а решить возникшую проблему не могу направьте на путь истинный. Задача следующая: на третьем листе таблица с данными, необходимо найти на втором листе совпадающие записи и вывести их на первый лист. Заранее благодарен за ответ)

Последний раз редактировалось ZorDMV; 29.04.2013 в 22:39.
ZorDMV вне форума Ответить с цитированием
Старый 29.04.2013, 22:25   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

На листе MY
Код:
01-2 Вологда
32-Шекснинский
На листе NER
Код:
01-2-ОМ Вологда
32-Шекснинский РОВД
Как Вы предполагаете их сравнивать? По первым двум символам - достаточно?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 29.04.2013, 22:34   #3
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
На листе MY
Код:
01-2 Вологда
32-Шекснинский
На листе NER
Код:
01-2-ОМ Вологда
32-Шекснинский РОВД
Как Вы предполагаете их сравнивать? По первым двум символам - достаточно?
На листе NER не должно быть "32-Шекснинский РОВД" должно быть просто "32-Шекснинский" забыл удалить РОВД)))
ZorDMV вне форума Ответить с цитированием
Старый 29.04.2013, 22:36   #4
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию

Вот правильный файл
Вложения
Тип файла: zip Пример.zip (39.9 Кб, 10 просмотров)
ZorDMV вне форума Ответить с цитированием
Старый 29.04.2013, 22:40   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В принципе, можно без макроса - см. формулы на 2-м и 3-м листах, потом автофильтр на 2-м листе по условию "не равно: #Н/Д", скопировать**, вставить на первый лист.

** В 2007+ перед копированием надо выделить видимые: F5 - выделить - только видимые ячейки, иначе скопируется все. В 2003 и более ранних и так копируются только видимые.
Вложения
Тип файла: rar Пример1.rar (50.5 Кб, 12 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 29.04.2013 в 22:43.
Казанский вне форума Ответить с цитированием
Старый 30.04.2013, 14:26   #6
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию

Благодарю за помощь))) Очень помогли мне, на основе этого и допишу макрос, поскольку я не для себя делал макрос, а для коллег, а они в Excel-е ничего не понимают, поэтому создам кнопку и будет им счастье. Еще раз благодарю за помощь))) И тему можно закрыть.

Последний раз редактировалось ZorDMV; 30.04.2013 в 14:29.
ZorDMV вне форума Ответить с цитированием
Старый 30.04.2013, 22:07   #7
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию

Начал переписывать макрос и получилось следующее
For i = 2 To kolstr2
s = "=LEFT(A" & i & ",2)&"" ""&B" & i & "&"" ""&C" & i & ""
ws2.Cells(i, 4).Formula = s
Next i
For i = 2 To kolstr2
s = "=MATCH(LEFT(A" & i & ",2)&"" ""&B" & i & "&"" ""&C" & i & ";MY!D2:D" & kolstr2 & ";0)"
ws4.Cells(i, 4).Formula = s
Next i

Третья строка проходит на ура, а восьмая вылетает в ошибку 1004, в чем дело понять не могу(((

Помогите пожалуйста разобраться.
Вложения
Тип файла: zip Пример1.zip (62.0 Кб, 10 просмотров)

Последний раз редактировалось ZorDMV; 30.04.2013 в 23:14.
ZorDMV вне форума Ответить с цитированием
Старый 01.05.2013, 03:14   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Мне проще заново написать
На листе с формулой ПОИСКПОЗ достаточно вписать формулу в одну ячейку, чтобы использовать ее как условие Расширенного фильтра, который и перенесет совпадающие строки на другой лист:
Код:
Sub bb()
With Sheets("MY")
    .Range("D2:D" & .Cells(.Rows.Count, "C").End(xlUp).Row).Formula = "=LEFT(A2,2)&"" ""&B2&"" ""&C2"
End With
With Sheets("NER")
    .Range("E2").Formula = "=MATCH(LEFT(A2,2)&"" ""&B2&"" ""&C2,MY!D:D,)"
    .Range("A1").CurrentRegion.AdvancedFilter xlFilterCopy, .Range("E1:E2"), Sheets("ITOG").Range("A1:C1")
    .Range("E2").Clear
End With
Sheets("MY").Columns("D").Clear
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.05.2013, 11:41   #9
ZorDMV
 
Регистрация: 16.04.2013
Сообщений: 7
По умолчанию

Благодарю за ответ)))
ZorDMV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в макросе runik Microsoft Office Excel 5 19.11.2012 17:28
макрос сравнения - ошибка?? Bape}l{ka Microsoft Office Excel 2 12.07.2011 16:31
Ошибка сравнения R71MT Win Api 11 20.06.2011 00:15
Нужен макрос для сравнения таблиц Silent_Hill Microsoft Office Excel 6 06.03.2010 19:37
Почему, ошибка в макросе valerij Microsoft Office Excel 8 27.02.2010 01:48