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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2014, 12:35   #1
panych
 
Регистрация: 24.09.2014
Сообщений: 8
Злость При копировании столбца из другой таблицы макрос перестает работать

Нужно сравнить данные из вторыx столбцов первого и второго листа и вывести результат на третий лист. Мой макрос делает это без проблем.
Но как только я копирую данные из базы и вставляю их соответственно в первый и второй листы, макрос работает не корректно, а именно не находит никаких совпадений, и пишет напротив каждой строки "не найдено"
Sub сравнение()
Dim temp, temph
Dim source_ As Object, target_ As Object, tocopy_ As Object, x As Range
Dim iFirstAddress$, blank_cell As Range
Dim cc As Range

Set source_ = Sheets(2)
Set target_ = Sheets(1)
Set tocopy_ = Sheets(3)

For Each cc In source_.UsedRange.Columns(2).Cells

temp = cc.Value
temph = source_.Cells(cc.Row, 5).Value

If temp <> "" Then
Set x = target_.Columns(2).Find(temp, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)

If Not x Is Nothing Then

iFirstAddress = x.Address

Do
Set x = target_.Columns(2).FindNext(x)
If target_.Cells(x.Row, 3).Value <> temph Then
Set blank_cell = tocopy_.Cells(tocopy_.Range("a" & Rows.Count).End(xlUp).Row + 1, 1)
source_.Cells(cc.Row, 2).Copy blank_cell
End If
Loop While Not x Is Nothing And x.Address <> iFirstAddress
Else
Set blank_cell = tocopy_.Cells(tocopy_.Range("a" & Rows.Count).End(xlUp).Row + 1, 1)
source_.Cells(cc.Row, 2).Copy blank_cell
blank_cell.Offset(0, 2).Value = "не найдено"
End If
End If
Next
MsgBox "готово"
End Sub
panych вне форума Ответить с цитированием
Старый 24.09.2014, 13:09   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вывод:
дело не макросе, а в данных. там действительно нет совпадений.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.09.2014, 13:39   #3
panych
 
Регистрация: 24.09.2014
Сообщений: 8
По умолчанию

это из первой таблицы(начало, пунктов около 600)
[0291,221,21] АЗС № 221 ГПН-Транзит
[0291,230,30] АЗС № 230 ГПН-Транзит
[0291,237,37] АЗС № 237 ГПН-Транзит
[0860,86,2086] АЗС-86 ГПН
[0860,257,2257] АЗС 257 ГПН
[0860,257,3257] АЗС 257 ГПН
[0860,260,2260] АЗС-260 ГПН


это из второй
[0291,221,21] АЗС № 221 ГПН-Транзит
[0291,230,30] АЗС № 230 ГПН-Транзит
[0291,237,37] АЗС № 237 ГПН-Транзит
[0863,10,10] АЗС № 210 ГПН Транзит
[0863,10,1010] АЗС № 210 ГПН Транзит
[0863,11,1011] АЗС № 211 ГПН Транзит
[0863,12,12] АЗС № 212 ГПН Транзит
[0863,12,2012] АЗС № 212 ГПН Транзит
[0863,32,32] АЗС № 232 ГПН Транзит

так вот он из второго листа копирует все и пишет не найдено, хотя совпадений 99% нужно найти только один-два отличающихся пунктов
panych вне форума Ответить с цитированием
Старый 24.09.2014, 14:32   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

макросы не умеют обманывать, нет совпадений - напишет:
Код:
blank_cell.Offset(0, 2).Value = "не найдено"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.09.2014, 15:34   #5
panych
 
Регистрация: 24.09.2014
Сообщений: 8
По умолчанию

но так есть, может беда в том, что он не видит лист1, как его переименовать в макросе, чтобы он ссылался на первый лист как бы он не назывался?
panych вне форума Ответить с цитированием
Старый 24.09.2014, 16:12   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и еще макросы не умеют угадывать мысли и делаю то, что написано в макросе, а не то, о чем Вы думаете или думали.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.09.2014, 11:37   #7
panych
 
Регистрация: 24.09.2014
Сообщений: 8
По умолчанию

в общем получается так.
если я в старой книге где макрос работает, оставляю пару столбцов и вставляю данные из моей таблицы, то макрос работает, если же удалитть все столбцы из старой книги и вставить данные из моей таблицы, макрос перестает работать
panych вне форума Ответить с цитированием
Старый 29.09.2014, 13:31   #8
panych
 
Регистрация: 24.09.2014
Сообщений: 8
По умолчанию

и еще есть вопрос.
как добавить в третий лист копирование не только 2 колонки, но и третьей?спасибо
panych вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
при открытии другой книги скрипт перестает работать gramp Microsoft Office Excel 5 14.02.2011 14:11
ПЕРЕСТАЕТ РАБОТАТЬ МАКРОС Cone Microsoft Office Excel 3 15.08.2010 13:49
Не работает клава а при нажатии на нее перестает работать мышь!! Дима я Компьютерное железо 10 02.03.2010 17:10
Ошибка при копировании столбца в Excel! antonchik Microsoft Office Excel 1 29.07.2008 07:48