powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как макросом убрать повторяющиеся строки EXCEL
25 сообщений из 89, страница 2 из 4
как макросом убрать повторяющиеся строки EXCEL
    #33978855
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 KL (XL)
к сожалению и ваш макрос не изменяет исходную таблицу
господа предлагаю исх. таблицу для проверки ваших макро
до публикации их на форуме

маша
маша
маша
маша
маша
коля
коля
коля
толя
толя
толя
толя
вася
вася
вася

с уважением ...
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33978921
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код не опитимизирован, т.к. это слегка переделанная процедура одного из моих проектов. Лень было заново придумывать. Но вроде работает.
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Sub ShortingReport()
    
    Dim rng As Range
    Dim i As Integer
    Dim diapazon As String
   
    'Здесь меняем диапазон
    diapazon = "A1:A15"
    
    Application.StatusBar = "Идет сокращение отчета..."
    Application.ScreenUpdating = False
    
    With ActiveSheet
    
        'проверка списка на достаточное кол-во позиций. 2 минимум.
        If .Range(diapazon).Cells( 1 ,  1 ).End(xlDown).Row >=  65535  Then
            MsgBox "Список отчета менее 2-ух позиций!" & Chr( 13 ) & Chr( 10 ) & _
                "Попробуйте проанализировать его вручную."
            Exit Sub
        End If
    
        i =  0 
        
        Do
    
            Set rng = .Range(diapazon).Find( _
                What:=.Range(diapazon).Offset(i,  0 ).Value, _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                MatchCase:=False)
       
            If Not (rng Is Nothing) Then

                Do Until (rng Is Nothing) Or _
                    (.Range(diapazon).Cells( 1 ,  1 ).Offset(i,  0 ).Address = .Range(diapazon).Cells( 1 ,  1 ).End(xlDown).Address)
                    .Rows(rng.Row).Delete Shift:=xlUp
                    Set rng = .Range(.Range(diapazon).Cells( 1 ,  1 ).Offset(i +  1 ,  0 ), .Range(diapazon).Cells( 1 ,  1 ).End(xlDown)).FindNext
                Loop
            End If
        
        i = i +  1 
    
        Loop While .Range(diapazon).Cells( 1 ,  1 ).Offset(i -  1 ,  0 ).Address <> .Range(diapazon).Cells( 1 ,  1 ).End(xlDown).Address

    End With
    Application.ScreenUpdating = True
    Application.StatusBar = ""
    
End Sub

...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33978990
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 2k-nike
и ваш код к сож. не изменяет исх. таблицу
все равно спасибо
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979041
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nosorog2 2k-nike
и ваш код к сож. не изменяет исх. таблицу
все равно спасибо
Что значит не меняет исходную таблицу?
У меня ваши маши, коли и т. п. до 4 строк сократились, а как должно быть?
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979297
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не в макросах, а в одном из 3х:

1) спрашивающий не может точно сформулировать задачу
2) спрашивающий не знает как их правильно использовать
3) данные на самом деле не одинаковые и таковыми лишь кажутся

время выкладывать файл, а не куски данных

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979368
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример прилагается

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979798
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k-nikeЧто значит не меняет исходную таблицу?

после запуска вашего макроса моя исходная таблица остается без изменений
моя исх. таблица это маши коли толи и тд
для чего на реальной таблице запускать макрос если на такой простенькой не работает

2 KL (XL)

на вашем файле Book1.xls (32Kb) все работает
кнопка "жми сюда" просто супер
скопировал ваш макрос и вставил в свой файл с машами колями и тд ...
делал так Insert > Module > Run
НЕ РАБОТАЕТ
у меня Excel 2000 (9.0.2812) может другая версия Excel нужна ???
или в чем моя ошибка ??? помогите плз !!!
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979820
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда остается 2 варианта:
KL (XL)
2) спрашивающий не знает как их правильно использовать
3) данные на самом деле не одинаковые и таковыми лишь кажутся
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33979980
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ALL
теперь все ОК !!!
в макросе KL (XL) надо заменитть точку старта макроса на Start = 1
он оставил сверху 18 строк пустыми и поместил туда кнопку "жми сюда"
кому интересно скачайте пример от KL (XL)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub test()
    Dim Start As Long, Finish As Long, col As Long
    Start =  19 : col =  1 
    Application.ScreenUpdating = False
    With ActiveSheet
        Finish = .Cells(.Rows.Count, col).End(xlUp).Row
        Set rng = .Range(.Cells(Start, col), .Cells(Finish, col))
        For i = Finish To Start Step - 1 
            If Application.CountIf(rng, Cells(i, col)) >  1  Then Rows(i).Delete
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

ребята всем огромное СПАСИБО !!!
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33980003
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub DeleteDubls()
    Dim rng As Range, rng2 As Range, rng3 As Range
    On Error Resume Next
    Set rng = Application.InputBox(Prompt:="Выберите данные.", _
      Title:="Выберите диапазон.", Type:= 8 , Left:= 200 , Top:=- 65 )
    If Err Then Exit Sub
    On Error GoTo  0 
    If rng.Rows.Count =  1  Then Exit Sub
    For Each rng2 In rng.Columns( 1 ).Cells
        If rng2 = "" Then Exit For
        If rng2 = rng2.Offset( 1 ,  0 ) Then
            If rng3 Is Nothing Then
                Set rng3 = rng2
            Else
                Set rng3 = Union(rng3, rng2)
            End If
        End If
    Next
    If Not rng3 Is Nothing Then rng3.EntireRow.Delete shift:=xlUp
End Sub
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33980139
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vkodor

большое спасибо за ваш макрос
сейчас разбираюсь как правильно задать диапазон
вместо слов "Выбирите данные" я бы написал "Например А1 - В5"
кажется это называется "дружественный интерфейс"
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33980557
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот для Вашего примера, всё было бы давно готово давно если свой excel'овский документ выложили бы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub DeleteDubls()
Const intDataCol =  1 
Const intStartRow =  2 
    Dim i%, j%, intMaxRow%
    Dim strValue1$, strValue2$
    intMaxRow =  22 
    i = intStartRow
    Do While i < intMaxRow
        strValue1 = Trim(Cells(i, intDataCol))
        For j = i +  1  To intMaxRow
            strValue2 = Trim(Cells(j, intDataCol))
            If StrComp(strValue1, strValue2, vbTextCompare) =  0  Then
                Cells(j, intDataCol).EntireRow.Delete
                intMaxRow = intMaxRow -  1 
                i = i -  1 
                If i < intStartRow Then i = intStartRow
            End If
        Next
        i = i +  1 
    Loop
End Sub
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33981133
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 orunbek

большое СПАСИБО !!!
сам не ожидал что будет столько постов
наверное объяснять что надо в итоге получить - не умею
а реальные мои таблицы только бы запутали всех
и вызвали бы массу вопросов к делу не относящихся

спасибо ВСЕМ, топик можно закрыть !
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #33981346
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nosorog2 orunbek
сам не ожидал что будет столько постов мы еще вам косточки не перемывали, постов будет больше
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113144
tosick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
А что скажите на счет вот этого: имеется две колонки, надо удалить повторы из первой колонки и сложить числа которые стояли возле этих повторов.
Причем повторы нужно искать по полному соответствию

Исходный вариант:
маша 5
маша 1
маша 3
дима 2
дима 1
маня 6
олег 3
олег 4

Необходимый вариант
маша 9
дима 3
маня 6
олег 7

Предлагайте пожалуйста и нетолько макросы, может есть какие либо проги которые умеют такое.
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113151
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tosickПредлагайте пожалуйста и нетолько макросы, может есть какие либо проги которые умеют такое.
сводная таблица
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113416
tosick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кроме сводных таблиц?
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113442
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меню "Данные" -> "Итоги"
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113470
tosick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, необходимо чтобы лишние данные были удалены напрочь с листа (а не скомбинированы и оставались на нем)
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34113496
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо что продолжили топик
теперь знаю как можно быстро посчитать кому и сколько я должен
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34118790
hirondelle11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sub Macro1()


Dim i, j As Integer


For i = 1 To 5000
For j = i + 1 To 5000
If Cells(i, x) <> vbNullString Then
If Cells(i, x) = Cells(j, x) Then
Rows(j).Delete
j = j - 1
End If
Else: If Cells(i, 4) = vbNullString Then Exit Sub
End If
Next
Next

End Sub


x-номер столбца в котором надо вести удаление. числа взяты наобум-смотрите по вашему файлу, сколько там строк для очистки
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34119696
SvIva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примерах Уокенбаха нашла подходящие формулы массивов для решения этих задач (без макросов), но не могу справиться с ошибкой #ЧИСЛО!. Функцию ЕОШ() я знаю, но формулы такие длинно-вложенные... Посмотрите файл, может посоветуете что.
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34120775
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvIvaВ примерах Уокенбаха нашла подходящие формулы массивов для решения этих задач (без макросов), но не могу справиться с ошибкой #ЧИСЛО!. Функцию ЕОШ() я знаю, но формулы такие длинно-вложенные... Посмотрите файл, может посоветуете что.

данная формула на мой взгляд далека от идеала и скорее интересна в чисто дидактическом плане.

1) Этот метод может и хорош, когда речь о сотнях и менее ячеек, т.к. формула чрезвычайно медленная

2) Добавить замену ошибок текстом нулевой длины без существенных потерь в скорости можно например так:
- в ячейку[H2] вносим формулу:
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(data;data))
- главную формулу преобразуем в:
{=ЕСЛИ(СТРОКА()-СТРОКА($A$2)>=$H$2;"";ИНДЕКС(data;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(data;data;0)=СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data)));ПОИСКПОЗ(data;data;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data))))))}

3) Формула Джона не переваривает пустые ячейки, возвращая ошибку. Следующая формула глотает пустые ячейки (внося значение 0 в список уникальных значений):
{=ЕСЛИ(СТРОКА()-СТРОКА($A$2)>=$H$2;"";ИНДЕКС(data;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(""&data;""&data;0)=СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data)));ПОИСКПОЗ(""&data;""&data;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data))))))}

4) К тому же, используемая Джоном, конструкция ДВССЫЛ("1:"&ЧСТРОК(data)) является короткой, но крайне неэффективной фомой получения массива ввиду своей летучести. Формулы использующии функции типа ДВССЫЛ пересчитываются при любом изменении на листе, независимо от того, влияет это изменение на результат или нет. А это тем более нежелательно в столь тяжеловесных формулах. Летучесть формулы можно устранить более быстрой (в 500 ячейках скорость формулы возрасла на 20%) и нелетучей конструкцией:
СТРОКА(ИНДЕКС(A:A;1):ИНДЕКС(A:A;ЧСТРОК(data)))
т.е.:
{=ЕСЛИ(СТРОКА()-СТРОКА($A$2)>=$H$2;"";ИНДЕКС(data;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(""&data;""&data;0)=СТРОКА(ИНДЕКС(A:A;1):ИНДЕКС(A:A;ЧСТРОК(data)));ПОИСКПОЗ(""&data;""&data;0);"");СТРОКА(ИНДЕКС(A:A;1):ИНДЕКС(A:A;ЧСТРОК(data))))))}

При всем при этом, все-таки для данной задачи несравненно лучше использовать Расширенный Фильтр как вручную так и через VBA.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34120872
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)3) Формула Джона не переваривает пустые ячейки, возвращая ошибку. Следующая формула глотает пустые ячейки (внося значение 0 в список уникальных значений):
{=ЕСЛИ(СТРОКА()-СТРОКА($A$2)>=$H$2;"";ИНДЕКС(data;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(""&data;""&data;0)=СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data)));ПОИСКПОЗ(""&data;""&data;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data))))))}

Если 0 не нужен, тогда можно так:

{=ЕСЛИ(СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data)))>=$H$2;"";ИНДЕКС(data;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(""&data;""&data;0)=(data<>"")*СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data)));ПОИСКПОЗ(""&data;""&data;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(data))))))}

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
как макросом убрать повторяющиеся строки EXCEL
    #34121032
SvIva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я поняла, что формулы массивов всегда медленнее single формул ? Из твоих предыдущих ответов на разные темы я поняла, что любые формулы листа быстрее кода. Так ли это? Формулы Уокенбаха надо разбирать для понимания использования функций, но не применять их ? Ответь, пожалуйста, а то я уже запуталась.
...
Рейтинг: 0 / 0
25 сообщений из 89, страница 2 из 4
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как макросом убрать повторяющиеся строки EXCEL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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