![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 20.07.2009
Сообщений: 6
|
![]()
Добрый день, уважаемые форумчане.
Проблема следующая: есть два листа примерно по 20000 строк. Большая часть записей совпадает, отличаются примерно 60. Искать их вручную - идиотизм. Поиск ведется по строковому сожержанию столба "A" обоих листов. Пример записи этого столбца - 95/21/3682/7/2009. При полном совпадении этих записей обе строки удаляются. В результате выполнения макроса должны остаться записи которые есть только в одном листе. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 20.07.2009
Сообщений: 6
|
![]()
Мое решение выглядит так:
Sub Ñðàâíåíèå_ëèñòîâ_0_1() Application.ScreenUpdating = False Dim s1, s2 As String Dim i, n As Integer For i = 1 To 20000 s1 = Worksheets("Ëèñò1").Cells(i, 1).Text For n = 1 To 20000 s2 = Worksheets("Ëèñò2").Cells(n, 1).Text If InStr(s2, s1) Then Worksheets("Ëèñò1").Rows(i).Delete Worksheets("Ëèñò2").Rows(n).Delete Next n Next i End Sub |
![]() |
![]() |
![]() |
#3 |
Регистрация: 20.07.2009
Сообщений: 6
|
![]()
Гы гы ))
ну млин даете, такая чушь написана. Все смотрят никто ничего не говорит. Попалась наконец то путняя литература. Ответ: Sub DelTel() Dim iLastRow As Long, i As Long Dim c As Range Dim iTel As String iLastRow = Sheets("Ëèñò1").Cells(11, 1).End(xlUp).Row For i = 2 To iLastRow iTel = Sheets("Ëèñò1").Cells(i, 1) Set c = Sheets("Ëèñò2").Columns(1).Find(wha t:=iTel, lookat:=xlWhole) If Not c Is Nothing Then c.EntireRow.Delete Next i MsgBox "Done!", vbInformation, "" End Sub единственное... как удаление строки с индексом i в первом листе лучше сделать? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
1. Ваше решение работать не будет, т.к. при использовании цикла For...Next, при удалении строки будет нарушаться счет цикла. В подобных случаях строки требуется перебирать снизу вверх.
2. Если сделать правильно, то будет о-о-очень медленно. Предлагаю что-нибудь такое: Код:
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 20.07.2009
Сообщений: 6
|
![]()
Спасибо большое... честное слово спасибо
Титанический труд. Я сегодня первый раз в жизни пишу макросы в Excel, синтаксис специфичный. бейсик мля. ребят задача почти решена, просто одну строчку подскажите пожалуйста. SAS888 еще раз спасибо |
![]() |
![]() |
![]() |
#6 |
Форумчанин Подтвердите свой е-майл
Регистрация: 21.09.2007
Сообщений: 138
|
![]()
Без макросов нельзя было обойтись?
ВПР, фильтром например... |
![]() |
![]() |
![]() |
#7 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
2 WIC
Цитата:
hibrid84 Цитата:
Чем шире угол зрения, тем он тупее.
|
||
![]() |
![]() |
![]() |
#8 |
Регистрация: 20.07.2009
Сообщений: 6
|
![]()
Да в общем то все ок ))
Только буду разбираться как работеат твой макрос еще долго )) Но спасибо все замечательно, правда он не удаляет из первого листа ничего, но это уже и не нужно ) слушай а можно в твой макрос добавить еще проверку? Такого типа: если нашел совпадение, то проверяет совпадение по значению другой ячейки этих же строк, ищет он по первой, а совпадение проверяет по второй. если совпадение нет, то ищет следующее совпадение. Если совпадений нет вообще, то не удаляет. |
![]() |
![]() |
![]() |
#9 |
Форумчанин Подтвердите свой е-майл
Регистрация: 21.09.2007
Сообщений: 138
|
![]()
простите...
вручную удалять. Идею, думаю, понятна: столбец добавляем. Через ВПР ищем совпадение на 2-м листе. Формула выдаст или значение или ошибку. Фильтр на не ошибки, выделить-удалить строки. Если уникальные значения на 2-х листах, то немного доработать...по тому же принципу. |
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]() Цитата:
Цитата:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 24.07.2009 в 05:06. |
||
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
МАКРОС НА ПОИСК, СУММИРОВАНИЕ И УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК | provodnikam | Microsoft Office Excel | 14 | 19.02.2015 07:53 |
удаление строк | alexk | Microsoft Office Excel | 24 | 15.02.2011 08:34 |
Одновременное удаление записей в разных таблицах | Lkhasa | БД в Delphi | 9 | 16.12.2010 13:21 |
Удаление строк | Dr.Badnezz | Общие вопросы Delphi | 1 | 07.10.2008 15:22 |
удаление строк | Dime_x | Microsoft Office Excel | 2 | 07.10.2008 13:38 |