Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчет количества дубликатов в столбце - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет количества дубликатов в столбце (Макросы/Sub)
Подсчет количества дубликатов в столбце
bmv98rus Дата: Воскресенье, 08.12.2019, 22:43 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Нужно похоже на коллекции переходить


2,22 сек.



И перебор не массива, а работа с листом, чуть медленнее, но не существенно


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 09.12.2019, 14:27
 
Ответить
СообщениеНужно похоже на коллекции переходить


2,22 сек.



И перебор не массива, а работа с листом, чуть медленнее, но не существенно

Автор - bmv98rus
Дата добавления - 08.12.2019 в 22:43
_Boroda_ Дата: Понедельник, 09.12.2019, 15:57 | Сообщение № 22
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
При этом, волею судеб _Boroda_, последние 4 столбца пустые

Хе-хе, а строка 532 и ниже?

Тоже работа с листом, а потом с массивом. 0,34 сек
[vba]
Код
Sub KolDub1()
    t_ = Timer
    With Me.UsedRange: End With
    c0_ = 5
    c_ = Cells(1).SpecialCells(xlLastCell).Column + 1
    If c_ < c0_ Then Exit Sub
    r0_ = 1
    nr_ = Cells(1).SpecialCells(xlLastCell).Row - r0_ + 1
    If nr_ < 1 Then Exit Sub
    Application.ScreenUpdating = 0
    cal_ = Application.Calculation
    Application.Calculation = 3
    For i = 0 To c_ - c0_ - 1
        Cells(r0_ + nr_ * i, c_).Resize(nr_) = Cells(r0_, c0_ + i).Resize(nr_).Value
    Next i
    With Me.Sort
        .SortFields.Add Key:=Cells(r0_, c0_ + i)
        .Apply
    End With
    n_ = Cells(Rows.Count, c0_ + i).End(3).Row
    ar = Cells(r0_, c0_ + i).Resize(n_)
    Cells(r0_, c0_ + i).Resize(n_).Clear
    With Me.UsedRange: End With
    For i = 1 To n_ - 1
        If ar(i, 1) = ar(i + 1, 1) Then
            x_ = x_ + 1
            If k_ = 0 Then
                x_ = x_ + 1
            End If
            k_ = 1
        Else
            k_ = 0
        End If
    Next i
    Application.Calculation = cal_
    Application.ScreenUpdating = 1
    Cells(1, 2) = x_
    Debug.Print "end    " & Format(Timer - t_, "0.00")
End Sub
[/vba]

2,22 сек.

У меня он отрабатывает 1,13


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
При этом, волею судеб _Boroda_, последние 4 столбца пустые

Хе-хе, а строка 532 и ниже?

Тоже работа с листом, а потом с массивом. 0,34 сек
[vba]
Код
Sub KolDub1()
    t_ = Timer
    With Me.UsedRange: End With
    c0_ = 5
    c_ = Cells(1).SpecialCells(xlLastCell).Column + 1
    If c_ < c0_ Then Exit Sub
    r0_ = 1
    nr_ = Cells(1).SpecialCells(xlLastCell).Row - r0_ + 1
    If nr_ < 1 Then Exit Sub
    Application.ScreenUpdating = 0
    cal_ = Application.Calculation
    Application.Calculation = 3
    For i = 0 To c_ - c0_ - 1
        Cells(r0_ + nr_ * i, c_).Resize(nr_) = Cells(r0_, c0_ + i).Resize(nr_).Value
    Next i
    With Me.Sort
        .SortFields.Add Key:=Cells(r0_, c0_ + i)
        .Apply
    End With
    n_ = Cells(Rows.Count, c0_ + i).End(3).Row
    ar = Cells(r0_, c0_ + i).Resize(n_)
    Cells(r0_, c0_ + i).Resize(n_).Clear
    With Me.UsedRange: End With
    For i = 1 To n_ - 1
        If ar(i, 1) = ar(i + 1, 1) Then
            x_ = x_ + 1
            If k_ = 0 Then
                x_ = x_ + 1
            End If
            k_ = 1
        Else
            k_ = 0
        End If
    Next i
    Application.Calculation = cal_
    Application.ScreenUpdating = 1
    Cells(1, 2) = x_
    Debug.Print "end    " & Format(Timer - t_, "0.00")
End Sub
[/vba]

2,22 сек.

У меня он отрабатывает 1,13

Автор - _Boroda_
Дата добавления - 09.12.2019 в 15:57
bmv98rus Дата: Понедельник, 09.12.2019, 16:08 | Сообщение № 23
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
У меня он отрабатывает 1,13
Сааш, ну так разные машины. Я на ноутбучике 6ти- 7ми летнем проверял ( I5) . на рабочем, допотопный I7 2012года 1,5 показал.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 09.12.2019, 16:09
 
Ответить
Сообщение
У меня он отрабатывает 1,13
Сааш, ну так разные машины. Я на ноутбучике 6ти- 7ми летнем проверял ( I5) . на рабочем, допотопный I7 2012года 1,5 показал.

Автор - bmv98rus
Дата добавления - 09.12.2019 в 16:08
_Boroda_ Дата: Понедельник, 09.12.2019, 16:36 | Сообщение № 24
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
ну так разные машины


Ну дык ясен пень. Я к тому написал про 1,13, чтобы 0,34 сравнивать не с 2,22, а с 1,13


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
ну так разные машины


Ну дык ясен пень. Я к тому написал про 1,13, чтобы 0,34 сравнивать не с 2,22, а с 1,13

Автор - _Boroda_
Дата добавления - 09.12.2019 в 16:36
RAN Дата: Понедельник, 09.12.2019, 16:58 | Сообщение № 25
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
а строка 532 и ниже?

Вспылил, был не прав. Смотрел только начало массива.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
а строка 532 и ниже?

Вспылил, был не прав. Смотрел только начало массива.

Автор - RAN
Дата добавления - 09.12.2019 в 16:58
bmv98rus Дата: Понедельник, 09.12.2019, 17:29 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Ну дык ясен пень.
Ок. В последнем варианте разве что ограничение по строкам листа есть, а так , да. с сортированным массивом все проще, в разы.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
Ну дык ясен пень.
Ок. В последнем варианте разве что ограничение по строкам листа есть, а так , да. с сортированным массивом все проще, в разы.

Автор - bmv98rus
Дата добавления - 09.12.2019 в 17:29
rtv206 Дата: Понедельник, 09.12.2019, 20:54 | Сообщение № 27
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, RAN, _Boroda_, Спасибо Вам огромное за такое активное решение проблемы)))
Каждый из предложенных способов буду пробовать))
Еще раз огромное человеческое СПАСИБО!
 
Ответить
Сообщениеbmv98rus, RAN, _Boroda_, Спасибо Вам огромное за такое активное решение проблемы)))
Каждый из предложенных способов буду пробовать))
Еще раз огромное человеческое СПАСИБО!

Автор - rtv206
Дата добавления - 09.12.2019 в 20:54
bmv98rus Дата: Понедельник, 09.12.2019, 21:23 | Сообщение № 28
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
rtv206, только про кросы не забывайте писать. Я то ладно, подправить 6 строк - не велика заслуга, а вот _Boroda_ время тратил.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеrtv206, только про кросы не забывайте писать. Я то ладно, подправить 6 строк - не велика заслуга, а вот _Boroda_ время тратил.

Автор - bmv98rus
Дата добавления - 09.12.2019 в 21:23
rtv206 Дата: Четверг, 12.12.2019, 21:48 | Сообщение № 29
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, bmv98rus, Ваши решения в сообщения №21 и 22- дают утешительное значение по времени)
Спасибо огромное!!!
 
Ответить
Сообщение_Boroda_, bmv98rus, Ваши решения в сообщения №21 и 22- дают утешительное значение по времени)
Спасибо огромное!!!

Автор - rtv206
Дата добавления - 12.12.2019 в 21:48
rtv206 Дата: Четверг, 19.12.2019, 11:11 | Сообщение № 30
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, bmv98rus, подскажите, пожалуйста, вставляю Ваши макросы в форму и выдает ошибку:
"Compile error/ Method or data member not found.
Что делаю не так?
 
Ответить
Сообщение_Boroda_, bmv98rus, подскажите, пожалуйста, вставляю Ваши макросы в форму и выдает ошибку:
"Compile error/ Method or data member not found.
Что делаю не так?

Автор - rtv206
Дата добавления - 19.12.2019 в 11:11
_Boroda_ Дата: Четверг, 19.12.2019, 11:13 | Сообщение № 31
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Что делаю не так?
Не показываете форму


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Что делаю не так?
Не показываете форму

Автор - _Boroda_
Дата добавления - 19.12.2019 в 11:13
rtv206 Дата: Четверг, 19.12.2019, 11:20 | Сообщение № 32
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не показываете форму
К сообщению приложен файл: 0919900.xlsm (24.3 Kb)
 
Ответить
Сообщение
Не показываете форму

Автор - rtv206
Дата добавления - 19.12.2019 в 11:20
_Boroda_ Дата: Четверг, 19.12.2019, 11:40 | Сообщение № 33
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для формы Me - это форма, а Вы пишете (и в моем макросе писалось) как для листа. Замените все Me на ActiveSheet
К сообщению приложен файл: 0919900_1.xlsm (27.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДля формы Me - это форма, а Вы пишете (и в моем макросе писалось) как для листа. Замените все Me на ActiveSheet

Автор - _Boroda_
Дата добавления - 19.12.2019 в 11:40
rtv206 Дата: Четверг, 19.12.2019, 11:48 | Сообщение № 34
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, Спасибо огромное)))
 
Ответить
Сообщение_Boroda_, Спасибо огромное)))

Автор - rtv206
Дата добавления - 19.12.2019 в 11:48
rtv206 Дата: Четверг, 19.12.2019, 12:47 | Сообщение № 35
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, не правильно подсчитывает количество дубликатов.
Должно быть 58 а пишет 200
 
Ответить
Сообщение_Boroda_, не правильно подсчитывает количество дубликатов.
Должно быть 58 а пишет 200

Автор - rtv206
Дата добавления - 19.12.2019 в 12:47
_Boroda_ Дата: Четверг, 19.12.2019, 15:04 | Сообщение № 36
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Во как, похоже, зависит от версии Excel. В 2010 диапазон подхватывался сам, а в 2013 не хочет. В сортировке добавьте строку SetRange
[vba]
Код
    With ActiveSheet.Sort
        .SortFields.Add Key:=Cells(r0_, c0_ + i)
        .SetRange Cells(r0_, c0_ + i).Resize(nr_ * (c_ - c0_))
        .Apply
    End With
[/vba]
К сообщению приложен файл: 0919900_2.xlsm (30.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВо как, похоже, зависит от версии Excel. В 2010 диапазон подхватывался сам, а в 2013 не хочет. В сортировке добавьте строку SetRange
[vba]
Код
    With ActiveSheet.Sort
        .SortFields.Add Key:=Cells(r0_, c0_ + i)
        .SetRange Cells(r0_, c0_ + i).Resize(nr_ * (c_ - c0_))
        .Apply
    End With
[/vba]

Автор - _Boroda_
Дата добавления - 19.12.2019 в 15:04
rtv206 Дата: Четверг, 19.12.2019, 16:10 | Сообщение № 37
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, Спасибо большое за помощь!
Буду пробовать
 
Ответить
Сообщение_Boroda_, Спасибо большое за помощь!
Буду пробовать

Автор - rtv206
Дата добавления - 19.12.2019 в 16:10
rtv206 Дата: Суббота, 25.01.2020, 11:40 | Сообщение № 38
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Прошу помощи- скачал файл с сообщения 36, когда открываю выскакивает ошибка:
Ошибка в части содержимого в книге 0919900_2.xlsm. Выполнить попытку восстановления?......
Что это может быть?
 
Ответить
СообщениеДобрый день!
Прошу помощи- скачал файл с сообщения 36, когда открываю выскакивает ошибка:
Ошибка в части содержимого в книге 0919900_2.xlsm. Выполнить попытку восстановления?......
Что это может быть?

Автор - rtv206
Дата добавления - 25.01.2020 в 11:40
RAN Дата: Суббота, 25.01.2020, 18:53 | Сообщение № 39
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Поломанный файл.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПоломанный файл.

Автор - RAN
Дата добавления - 25.01.2020 в 18:53
rtv206 Дата: Суббота, 25.01.2020, 20:29 | Сообщение № 40
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, Спасибо
 
Ответить
СообщениеRAN, Спасибо

Автор - rtv206
Дата добавления - 25.01.2020 в 20:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет количества дубликатов в столбце (Макросы/Sub)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!