powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнить два листа excel
17 сообщений из 17, страница 1 из 1
Сравнить два листа excel
    #37399574
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два листа excel с данными (email-адреса).
Один главный, он содержит адреса для рассылки. В нём могут содержаться адреса тех, кто отписался.
Второй вспомогательный, он содержит всех подписчиков, которые отписались.
Подскажите, возможно ли "очистить" первый список от тех кто отписался, используя второй список?
То есть, необходимо, чтобы программа проанализировала два листа, определила содержатся ли в первом листе email-адреса имеющиеся во втором и удалил их (прямо со строками желательно).
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399681
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ligash,
то именно у вас не получается :
1. Анализ листов
2. Поиск совпадений
3. Удаление
?
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399685
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ligashЕсть два листа excel с данными (email-адреса).
Один главный, он содержит адреса для рассылки. В нём могут содержаться адреса тех, кто отписался.
Второй вспомогательный, он содержит всех подписчиков, которые отписались.
Подскажите, возможно ли "очистить" первый список от тех кто отписался, используя второй список?
То есть, необходимо, чтобы программа проанализировала два листа, определила содержатся ли в первом листе email-адреса имеющиеся во втором и удалил их (прямо со строками желательно).проще формировать третий лист, в котором будут имена уникальные адреса для рассылки
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399763
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke, ничего не получается так как не знаю как делать:)
Если у вас есть опыт, было бы здорово, если бы вы им поделились со мной.
По сути, нужно удалить в первом листе адреса, имеющиеся во втором.
К примеру:
До
1 лист 2 лист
123@mail.ru 321@mail.ru
12@mail.ru 12@mail.ru
1@mail.ru 21@mail.ru

После:
1 лист 2 лист
123@mail.ru 321@mail.ru
1@mail.ru 12@mail.ru
21@mail.ru
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399766
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB, Отличное решение, а как его возможно реализовать?
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399846
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ligashbig-duke, ничего не получается так как не знаю как делать:)
Если у вас есть опыт, было бы здорово, если бы вы им поделились со мной.
По сути, нужно удалить в первом листе адреса, имеющиеся во втором.
К примеру:
До
1 лист 2 лист
123@mail.ru 321@mail.ru
12@mail.ru 12@mail.ru
1@mail.ru 21@mail.ru

После:
1 лист 2 лист
123@mail.ru 321@mail.ru
1@mail.ru 12@mail.ru
21@mail.ruчёт я не понял, а откуда в примере после на 1 листе взялся адрес 21@mail.ru, если надо только удалить все, что есть на 2 листе из 1?
вероятно "после" должен состоять из
123@mail.ru
1@mail.ru
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399858
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простая формула выглядит так.
=ЕСЛИ(ЕОШИБКА(ВПР(A3;$C$3:$C$5;1;0)="ИСТИНА");A3;"")
Она без сортировки результатов.
в столбике A - данные 1 листа
в столбике С - данные 2 листа
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37399948
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB, да, всё правильно, просто хотел поставить два столбца, а после отправки отформатировалось видимо и всё съехало
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400003
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ligash,
в обоих случаях процедуры должны быть в обрабатываемой книге,
книга должна быть предварительно сохранена.
Поменяйте названия листов "Лист1", "Лист2" на соответствующие Вашим

фильтрация на месте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub uu22()
Dim cn, rs, w
Dim scn$, sq$, k&

scn = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;Data Source=" _
    & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"
    
sq = "select t1.f1 from" _
 & " (select f1 from (select * from [Лист1$A1:A65500])) as t1" _
 & " left join" _
 & " (select f1,f3 from (select * from [Лист2$A1:A65500])) as t2" _
 & " on t1.f1=t2.f1" _
 & " where t1.f1 is not null and t2.f1 is null"
    
Set cn = CreateObject("adodb.connection"): cn.Open scn
Set rs = CreateObject("adodb.recordset"): rs.Open sq, cn
sq = rs.GetString: rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

w = Split(sq, vbCr)
k = UBound(w) +  1 
With ThisWorkbook.Worksheets("Лист1")
.Cells.Clear
.Range(.Cells( 1 ,  1 ), .Cells(k,  1 )) = w
End With
Erase w

End Sub


копирование разницы в новую книгу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub uu2()
Dim cn, rs, w
Dim scn$, sq$, k&

scn = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;Data Source=" _
    & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"
    
sq = "select t1.f1 from" _
 & " (select f1,f2,f4 from (select * from [Лист1$A1:A65500])) as t1" _
 & " left join" _
 & " (select f1,f3 from (select * from [Лист2$A1:A65500])) as t2" _
 & " on t1.f1=t2.f1" _
 & " where t1.f1 is not null and t2.f1 is null"
    
Set cn = CreateObject("adodb.connection"): cn.Open scn
Set rs = CreateObject("adodb.recordset"): rs.Open sq, cn

With Application
k = .SheetsInNewWorkbook
.SheetsInNewWorkbook =  1 
Set w = .Workbooks.Add.Worksheets( 1 )
.SheetsInNewWorkbook = k
End With
w.[A1].CopyFromRecordset rs
set w=nothing
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400014
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ligash,
упс.... запросы не поправил нормально. Должны быть такие (в обеих процедурах одинаковые):

Код: plaintext
1.
2.
3.
4.
5.
6.
sq = "select t1.f1 from" _
 & " (select f1 from (select * from [Лист1$A1:A65500])) as t1" _
 & " left join" _
 & " (select f1 from (select * from [Лист2$A1:A65500])) as t2" _
 & " on t1.f1=t2.f1" _
 & " where t1.f1 is not null and t2.f1 is null"
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400144
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanBпростая формула выглядит так.
=ЕСЛИ(ЕОШИБКА(ВПР(A3;$C$3:$C$5;1;0)="ИСТИНА");A3;"")
Она без сортировки результатов.
в столбике A - данные 1 листа
в столбике С - данные 2 листа

Простите, я чайник:)
Итак, вот у меня в excel два листа
в столбике A - данные 1 листа
в столбике С - данные 2 листа
Куда формулу вставлять? в B и протащить до конца??
Извиняюсь, если вопрос глупый.
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400155
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ligash, вариант без тяжелой артиллерии - в модуль листа3:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub www()
    On Error Resume Next: Application.ScreenUpdating = False
    Dim sh As Worksheet, coll As New Collection, ra As Range, cell As Range, item
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> Me.Name Then
            Set ra = sh.Range(sh.Range("a2"), sh.Range("a" & sh.Rows.Count).End(xlUp))
            For Each cell In ra.Cells
                If Len(Trim(cell)) Then coll.Add cell.Value, cell.Value
            Next cell
        End If
    Next sh
    Me.Range(Me.[a2], Me.Cells(Me.Rows.Count,  1 ).End(xlUp)).ClearContents ' очистка
    For Each item In coll
        Me.Range("a" & Me.Rows.Count).End(xlUp).Offset( 1 ) = item
    Next
    Me.Range(Me.[a2], Me.Range("a" & Me.Rows.Count).End(xlUp)).Sort Me.Range("a1").End(xlDown), xlAscending, , , , , , xlYes
End Sub
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400168
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp,
Прошу Вас, объясните, пожалуйста, чайнику, куда вставлять этот код?))
Как выстроить столбцы с данными при этом?)


Спасибо!
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400189
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если правильно понял
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400196
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по есть двойной щелчок мышей по выделенному (на рисунке синим) листу и Вы в модуле
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37400197
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ligash, я же написал, вставлять в модуль листа 3. Данные будут браться из листов 1 и 2, первых столбцов. Вывод в лист 3. Вообще нужно свой файл-пример выкладывать, чтоб не приходилось Вам на пальцах объяснять. Гляньте еще вариант с удалением строк в листе 1, но работать будет не ниже, чем в 2007 версии:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub www()
    On Error Resume Next: Application.ScreenUpdating = False
    Dim sh As Worksheet, coll As New Collection, ra As Range, c As Range, item, a(), i&
    Set sh = Sheets( 2 ): i =  1 
    Set ra = sh.Range(sh.Range("a2"), sh.Range("a" & sh.Rows.Count).End(xlUp))
    For Each c In ra.Cells
        If Len(Trim(c)) Then coll.Add c.Value, c.Value
    Next
    ReDim a( 1  To coll.Count)
    For Each item In coll: a(i) = item: i = i +  1 : Next
    Set ra = Sheets( 1 ).UsedRange
    With ra
        .AutoFilter Field:= 1 , Criteria1:=a, Operator:= 7 
        .Offset( 1 ).SpecialCells( 12 ).EntireRow.Delete
        .Sort ra, xlAscending, , , , , , xlYes
    End With: ra.Parent.AutoFilterMode =  0 
End Sub
...
Рейтинг: 0 / 0
Сравнить два листа excel
    #37401813
ligash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp,
Огромное спасибо! Всё сработало. Только вот так и не догадался, как использовать это, а просто взял ваш файл, открыл его параллельно с нужным мне и в своём открыл макросы, он увидел макрос из вашего файла и отработал по нему в моем файле. Может запутанно объяснил, но как есть)
В общем в любом случае, спасибо, теперь просто пользуюсь Вашим файлом для таких ситуаций!
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнить два листа excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]