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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 18:31   #1
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
Вопрос Сравнение 2 столбцов (метод find)

Суть задачи:
На листах 1 и 2 в столбце А есть некоторые данные (в одном и том же столбце не повторяются). Необходимо проверить, есть ли на листе 1 ячейки, значения которых отличаются от листа 2, и если есть добавить их в конец столбца на листе 2.

Думаю пройти циклом по столбцу листа 2 и используя метод Find, проверять наличие каждого значения в листе 1.

Вопрос 1: Find должен возвращать булево значение, но чего-то не пойму как его [метод] применить к столбцу.

Вопрос 2: Есть ли встроенные функции для перехода на последнюю непустую строку (или первую пустую)?
Костян Пират вне форума Ответить с цитированием
Старый 16.11.2011, 18:47   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Syntax
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Return Value
A Range object that represents the first cell where that information is found.

2.есть: range.End
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.11.2011, 18:52   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Find вернёт ссылку на ячейку, т.е. на объект.
Пример:
Код:
Sub tt()
Dim x As Range
Set x = Columns(1).Find("Строительные материалы, изделия и конструкции", , xlValues, xlWhole)
If Not x Is Nothing Then Range([a1], x.Offset(-1)).EntireRow.Delete
End Sub
И кстати Find'ом будет медленнее, чем на словаре и массивах, как тут например: http://www.programmersforum.ru/showp...53&postcount=5
Если конечно нужно не пару значений сверить.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 16.11.2011 в 19:05.
Hugo121 вне форума Ответить с цитированием
Старый 16.11.2011, 21:36   #4
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
If Not x Is Nothing Then
А можно чуть подробнее об этом куске? чтобы всё это на уровень осознанности вышло)
Костян Пират вне форума Ответить с цитированием
Старый 16.11.2011, 22:01   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

If Not x Is Nothing Then - это если нашли.
т.е.
если x определился
или иначе
если не (x не определился) то
потому что иначе будет ошибка, если find ничего не найдёт.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2011, 20:08   #6
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
2.есть: range.End
а пример использования можно?
Костян Пират вне форума Ответить с цитированием
Старый 17.11.2011, 20:33   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Sub tt()
Dim ra As Range
Set ra = Range([A1], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
ra.Select
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2011, 20:46   #8
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

\и чтобы окончательно запутать пользователя он прибег к следующему синтаксису : )
Код:
Sub io()
On Error Resume Next
Columns(1).Find(ActiveCell.Value).Item(0).EntireRow.Delete
End Sub
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение столбцов Exel lirik88 Microsoft Office Excel 4 10.11.2011 18:01
Сравнение столбцов sidanarchy Microsoft Office Excel 7 25.02.2011 09:24
Сравнение столбцов Nakrul Microsoft Office Excel 11 17.02.2011 16:12
Сравнение столбцов в Excel Laa911 Microsoft Office Excel 61 21.08.2010 13:11
метод find kate158 Общие вопросы Delphi 4 15.12.2009 16:09