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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 22:14   #1
Rivendell
Новичок
Джуниор
 
Регистрация: 16.12.2009
Сообщений: 2
По умолчанию Сравнение строк

Помогите пожалуйста найти решение проблемы.
Имеется таблица.
Необходимо сравнить ее строки на предмет совпадения строк. В строках содержится и текст и числа. Строки одинаковы, если они полностью идентичны. В случае совпадения определенной строки, в последнем столбце необходимо указать, с какой строкой совпадает данная строка.
Прикрепил пример чтобы было понятнее.
Нужно сравнивать каждую строку со всеми предыдущими строками
Вложения
Тип файла: zip Совпадение.zip (3.9 Кб, 40 просмотров)
Rivendell вне форума Ответить с цитированием
Старый 16.12.2009, 23:35   #2
alyon_ka
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 40
По умолчанию

вообще дублирующиеся строки легко определить с помощью функции СЧЕТЕСЛИ(), но а так - если нужно указать с какой строкой совпадает - то это уже нужно что-то типа макроса, и еще вопрос, строка может повторяться только один раз или и два и три и т.д.?
alyon_ka вне форума Ответить с цитированием
Старый 16.12.2009, 23:46   #3
Rivendell
Новичок
Джуниор
 
Регистрация: 16.12.2009
Сообщений: 2
По умолчанию

спасибо за ответ!
теоретически конечно строка может повторяться несколько раз, но можно попробовать и с одним разом, если это возможно без макроса.
Что ж, пусть будет без указания с какой строкой совпадает, пусть просто там какая-нибудь пометка будет, напротив повторяющейся строчки.
Я думал о СЧЁТЕСЛИ(), но ведь надо проводить сравнение каждой ячейки строки с ячейками других строк соответствующих столбцов, а эта функция может только одну ячейку вроде как. Или тут придеться использовать несколько вложенных условий Если(счетесли и т.д.?
И еще, каков будет механизм сравнения при использовании СЧЕТЕСЛИ?
Первую строку не сравниваем.
Вторая сравнивается с первой.
Третья сравнисается с первой и со второй и т.д.?

P.S. Не представляю как эти макросы интегрируются в лист excel совершенно. Если можно, то желательно обойтись без них.
Rivendell вне форума Ответить с цитированием
Старый 17.12.2009, 09:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не морочьте себе голову!
счётесли считает совпадение элемента с ДИАПАЗОНОМ!
например, строки в столбце A, чтобы посчитать, сколько встречается строка из ячейки A1 -
рядом, в любом столбце пишем формулу
=СЧЁТЕСЛИ($A:$A;A1)
протягиваем и, вуаля..

а для выделения повторов очень удобно пользоваться условным форматированием.
выбираем там "Формула", задаём формулу вида:
Код:
=(СЧЁТЕСЛИ($A:$A;A1)>1)
задаём выделение цветом/заливкой.
ОК.
потом нажимаем кнопку с кисточкой ("формат по образцу") и выделяем весь столбец со строками...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2009, 09:27   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Могу предложить решение с помощью пользовательской функции.
Посмотрите вложение. Обратите внимание на формулы в ячейках в диапазоне "G7:G21". Функция получает 1 параметр - диапазон ячеек одной строки для сравнения, а возвращает номера совпадающих строк, расположенных выше, в текстовом виде через запятую.
Вложения
Тип файла: rar Совпадение_2.rar (9.3 Кб, 80 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 17.12.2009 в 10:33.
SAS888 вне форума Ответить с цитированием
Старый 17.12.2009, 23:29   #6
Devill
Новичок
Джуниор
 
Регистрация: 11.12.2009
Сообщений: 2
По умолчанию

Здравствуйте. Возникла такая задача: есть две книги, price1 и price2. Если строка A1[price1]=A1[price2] то смотрим строку B1[price2] и если она начинается с ***, то строку B1[price1] выделяем цветом, если нет то переходим к следующей. Поможите?

И еще сразу вопрос, подскажите, как сравнить 2 столбца на одном листе и очистить ячейки второго столбца если его значения равны значению первого столбца (построчно).

За ранее благодарен.
Вложения
Тип файла: rar пример.rar (7.7 Кб, 22 просмотров)
Devill вне форума Ответить с цитированием
Старый 18.12.2009, 06:44   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Посмотрите пример во вложении. Откройте оба файла и запустите макрос "Main".
2. Пусть требуется в столбце "B" очистить ячейки, содержащие значения, которые имеются в столбце "A". Можно выполнить макрос:
Код:
Sub Main()
    Dim i As Long, x As Range: Application.ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
        Set x = [A:A].Find(what:=Cells(i, 2), LookAt:=xlWhole)
        If Not x Is Nothing Then Cells(i, 2).ClearContents
    Next
End Sub
Вложения
Тип файла: rar пример_2.rar (14.9 Кб, 85 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.12.2009, 10:10   #8
Devill
Новичок
Джуниор
 
Регистрация: 11.12.2009
Сообщений: 2
По умолчанию

SAS888 Огромное спасибо, все работает.
А не подскажите еще, какую литературу почитать или сайты посмотреть, что бы можно было самому такое писать и Ваш код понимать, как я понимаю задачи то простые можно и самому разобраться при желании
Devill вне форума Ответить с цитированием
Старый 18.12.2009, 10:29   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Для решения простых задач, вполне достаточно имеющейся справки по VBA Excel. Для более детального изучения, несомненно, лучшее - это книга Дж. Уокенбаха "Профессиональное программирование на VBA Excel 200Х".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение строк -? Evgenii Общие вопросы Delphi 10 15.07.2009 15:28
С++. Сравнение строк maxlav Помощь студентам 8 25.06.2009 04:33
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31
нужна помощь, сравнение строк в Си 3.1 feranic Помощь студентам 5 24.04.2008 17:57
Сравнение строк HOMER Общие вопросы Delphi 7 04.01.2008 05:53