powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление повторных ячеек
25 сообщений из 28, страница 1 из 2
Удаление повторных ячеек
    #35401013
ivanov3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго все времени!

Возник вопрос, вот условие..

Есть 2 странички, содержащие числовые ячейки вида 8456456, нужно сравнить ячейки листа 2 с ячейками листа 1.

Если ячейки листа 2(столбца А) совпадают с ячейками листа 1 (Столбца А) то удалить повторяющуюся ячейку на листе 1. если совпадения нет то ничего не происходит.
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35401221
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот вариантик у меня получился, не плохой по скорости, но много кода, можно было бы всё формулами сделать но вопрос к знатокам: При использовании формулы наименьший() не получается передать в код массив как результат вычисления формулы. По-моему мы с @Nik уже где-то это обсуждали но не могу всмпомнить где?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Макрос1()
Dim mas As Variant, mC As Long, rng As Range
mas = Application.Transpose(Evaluate("IF(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0)),ROW(A1:A100))"))
mC = Application.Count(mas)
If mC >  0  Then
  Set rng = Range("a" & Application.Small(mas,  1 ))
  If mC >  1  Then
    For i =  2  To mC
     Set rng = Union(rng, Range("a" & Application.Small(mas, i)))
    Next
  End If
  rng.ClearContents
End If
End Sub
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35401245
ivanov3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!способ супер ты меня выручил .Спасибо еще раз!!!
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35401977
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadТакой вот вариантик у меня получился, не плохой по скорости, но много кода, можно было бы всё формулами сделать но вопрос к знатокам: При использовании формулы наименьший() не получается передать в код массив как результат вычисления формулы. По-моему мы с @Nik уже где-то это обсуждали но не могу всмпомнить где?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Макрос1()
Dim mas As Variant, mC As Long, rng As Range
mas = Application.Transpose(Evaluate("IF(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0)),ROW(A1:A100))"))
mC = Application.Count(mas)
If mC >  0  Then
  Set rng = Range("a" & Application.Small(mas,  1 ))
  If mC >  1  Then
    For i =  2  To mC
     Set rng = Union(rng, Range("a" & Application.Small(mas, i)))
    Next
  End If
  rng.ClearContents
End If
End Sub


или так:

Код: plaintext
1.
2.
Sub test1()
    [A1:A100] = Evaluate("IF(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0)),"""",A1:A100&"""")")
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35402205
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для обнуления вариант, но как в одно действие получить range.
Хотя опять же повторюсь по-моему мы уже это обсуждали, потом нужно будет поискать.
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35402292
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadДля обнуления вариант, но как в одно действие получить range.
Хотя опять же повторюсь по-моему мы уже это обсуждали, потом нужно будет поискать.

Код: plaintext
1.
2.
3.
4.
Sub test1()
    Dim x
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(SMALL(IF(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
End Sub
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35402315
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim x, rng As Range
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(""A""&SMALL(IF(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
    Set rng = Range(Join(x, ","))
    rng.Interior.ColorIndex =  15 
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35402410
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim x, rng As Range
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(""A""&SMALL(IF(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
    Set rng = Range(Join(x, ","))
    rng.Interior.ColorIndex =  15 
End Sub

KL
[MVP - Microsoft Excel]

ТОЧНО! TRANSPOSE нужно было в экселе делать, а не в VBA.
Спасибо.
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35407596
ivanov3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо что откликнулись .А есть функция на удаление ячеек.а то эта только очищает.на форуме искал нет ничего.Если не сложно можете ее совместить с первым кодом.
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35407633
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov3Еще раз спасибо что откликнулись .А есть функция на удаление ячеек.а то эта только очищает.на форуме искал нет ничего.Если не сложно можете ее совместить с первым кодом.
Удалять ячейки со сдвигом вверх или удалять строки целиком?
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35407680
ivanov3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалять строки целеком!!!
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35407924
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test3()
    Dim x, rng As Range
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(""A""&SMALL(IF(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
    Set rng = Range(Join(x, ","))
    rng.EntireRow.Delete
End Sub
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35408232
ivanov3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо тебе огромное что откликнулся !!!!!!вот это супер а то и в книгах смотрел не мог найти функцию.СПАСИБО!!!!
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35412851
putsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test3()
    Dim x, rng As Range
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(""A""&SMALL(IF(ISNUMBER(MATCH(A1:A100,Лист2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
    Set rng = Range(Join(x, ","))
    rng.EntireRow.Delete
End Sub


Не работает для большого числа ячеек, например для 10000. как решить эту проблему?
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35412876
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас некогда. Но скорее всего это из-за какого-нибуть ограничения для текстовой строки подсталяемой в Range.
Попробуйте взять мой первый код (второй пост), только вместо
Код: plaintext
rng.ClearContents
поставте
Код: plaintext
rng.EntireRow.Delete
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35412955
putsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DeggasadСейчас некогда. Но скорее всего это из-за какого-нибуть ограничения для текстовой строки подсталяемой в Range.
Попробуйте взять мой первый код (второй пост), только вместо
Код: plaintext
rng.ClearContents
поставте
Код: plaintext
rng.EntireRow.Delete


спасибо большое, все работает!
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35413020
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал запустить удаление на 1 миллионе строчек. Вот сижу жду...Уже 5 минут. Уже 10...
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35413052
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub test()
    Dim ws As Worksheet
    Dim rng As Range
    
    Application.ScreenUpdating = False
    With [A1:A1048576]
        .AdvancedFilter xlFilterInPlace, , , True
        Set rng = .SpecialCells(xlCellTypeVisible).EntireRow
        Set ws = Worksheets.Add
        rng.Copy ws.Cells( 1 )
        .Parent.ShowAllData
        Cells.ClearContents
        ws.UsedRange.Copy .Cells( 1 )
    End With
    Application.DisplayAlerts = False
    ws.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Предполагается, что...
1) в таблице больше одного столбца
2) используется XL2007
3) кол-во неприлегающих друг к другу уникальных значений не превышает 8193
4) надо найти уникальные значения исключительно в 1-м столбце, а не уникальные строки вцелом(иначе код был бы попроще и не было бы ограничения из пункта 3)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35413290
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это немного не то
Надо сравнить 2 листа
и с 1 листа удалить строки где содержимое столбца А совпадает с содержимым столбца А листа 2
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35413412
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А да, я уже подзабыть задачу. Ну тогда попробуй добавить след. команды:

В НАЧАЛЕ ПРОЦЕДУРЫ
Код: plaintext
1.
2.
3.
4.
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

В КОНЦЕ ПРОЦЕДУРЫ
Код: plaintext
1.
2.
3.
4.
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35479491
Pavel55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim x, rng As Range
    cnt = Evaluate("SUM(N(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0))))")
    x = Evaluate("TRANSPOSE(""A""&SMALL(IF(ISNUMBER(MATCH(A1:A100,Sheet2!A1:A100,0)),ROW(A1:A100)),ROW(1:" & cnt & ")))")
    Set rng = Range(Join(x, ","))
    rng.Interior.ColorIndex =  15 
End Sub

KL
[MVP - Microsoft Excel]

А нельзя ли такое, только с условием, что есть список на одном листе, скажем А2:А100 и надо удалить задвоенные позиции в этом диапазоне? А то я что-то не могу это переделать под свои нужды.

P.S. Я могу это сделать другим способом (циклом), но вдруг можно через такие формулы, т.е. без циклов.
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35482106
Pavel55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так никто и не подскажет по формулам? (
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35614903
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dan-KПопробовал запустить удаление на 1 миллионе строчек. Вот сижу жду...Уже 5 минут. Уже 10...
А теперь поробуй этот вариант на миллионе строчек и ощути разницу :-))
Код: plaintext
1.
2.
3.
4.
5.
Sub DeleteCopy1()
On Error Resume Next
[aaa] = [IF(ISNUMBER(MATCH(aaa,bbb,)),NA(),aaa)]
[aaa].SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Select 'Delete
End Sub
Для его работы задайте имена "aaa" (английскими) для диапазона на листе 1 (напр. =A1:A1000000 ) и "bbb" - для диапазона на листе 2 (где искать) (напр. =Лист2!A1:A980000)
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35614915
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel55А нельзя ли такое, только с условием, что есть список на одном листе, скажем А2:А100 и надо удалить задвоенные позиции в этом диапазоне? А то я что-то не могу это переделать под свои нужды.
Вот:
Код: plaintext
1.
2.
3.
4.
Sub DeleteCopy2()
On Error Resume Next
[aaa] = [IF(MATCH(aaa,aaa,)=ROW(aaa)-ROW(INDEX(aaa, 1 ))+ 1 ,aaa,NA())]
[aaa].SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Select 'Delete
End Sub
только обзови свой диапазон "aaa"
...
Рейтинг: 0 / 0
Удаление повторных ячеек
    #35658440
zarrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а не подскажите как при этом удалить ещё и Н\Д..которое возникает?, что бы ячейки в которых были данные повторные...вообще пропали...
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление повторных ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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