Подсчет количества дубликатов в столбце
rtv206
Дата: Четверг, 09.05.2019, 17:58 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Доброго времени суток! Уважаемые форумчане помогите в решении задачки Необходимо посчитать количество дубликатов в столбце, которые выделяются условным форматированием и вывести количество в ячейку
Доброго времени суток! Уважаемые форумчане помогите в решении задачки Необходимо посчитать количество дубликатов в столбце, которые выделяются условным форматированием и вывести количество в ячейку rtv206
Ответить
Сообщение Доброго времени суток! Уважаемые форумчане помогите в решении задачки Необходимо посчитать количество дубликатов в столбце, которые выделяются условным форматированием и вывести количество в ячейку Автор - rtv206 Дата добавления - 09.05.2019 в 17:58
_Boroda_
Дата: Четверг, 09.05.2019, 18:31 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Так нужно?
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
А вообще - название темы не очень. Решения есть не только с СЧЁТЕСЛИ. Просто навскидку - ПОИСКПОЗ, ЧАСТОТА, ПРОСМОТР, ...
Так нужно?
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
А вообще - название темы не очень. Решения есть не только с СЧЁТЕСЛИ. Просто навскидку - ПОИСКПОЗ, ЧАСТОТА, ПРОСМОТР, ... _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Так нужно?
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
А вообще - название темы не очень. Решения есть не только с СЧЁТЕСЛИ. Просто навскидку - ПОИСКПОЗ, ЧАСТОТА, ПРОСМОТР, ... Автор - _Boroda_ Дата добавления - 09.05.2019 в 18:31
rtv206
Дата: Суббота, 11.05.2019, 21:23 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , спасибо, буду тестировать
_Boroda_ , спасибо, буду тестироватьrtv206
Ответить
Сообщение _Boroda_ , спасибо, буду тестироватьАвтор - rtv206 Дата добавления - 11.05.2019 в 21:23
rtv206
Дата: Среда, 12.06.2019, 18:58 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , При очень больших количествах ячеек, которые необходимо проверять, начинает тормозить Excel. Есть ли другие варианты? кроме
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
_Boroda_ , При очень больших количествах ячеек, которые необходимо проверять, начинает тормозить Excel. Есть ли другие варианты? кроме
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
rtv206
Сообщение отредактировал rtv206 - Среда, 12.06.2019, 18:59
Ответить
Сообщение _Boroda_ , При очень больших количествах ячеек, которые необходимо проверять, начинает тормозить Excel. Есть ли другие варианты? кроме
=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:A99 ;A1:A99 )>1))
Автор - rtv206 Дата добавления - 12.06.2019 в 18:58
_Boroda_
Дата: Среда, 12.06.2019, 22:46 |
Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Вариантов много. Но большинство из них тоже тормознутые Попробуйте так Кол-во различных неуникальных кодов
=СУММ(--(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Кол-во "лишних" кодов (в массиве 1,1 ,2,2,2,2 лишних 4 штуки)
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))
Кол-во дубликатов вообще
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))-СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Или, что то же самое
=СЧЁТ(A:A )+СУММ({-1;1}*(ЧАСТОТА(A1:A99 ;A1:A99 )>{0;1}))
Вариантов много. Но большинство из них тоже тормознутые Попробуйте так Кол-во различных неуникальных кодов
=СУММ(--(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Кол-во "лишних" кодов (в массиве 1,1 ,2,2,2,2 лишних 4 штуки)
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))
Кол-во дубликатов вообще
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))-СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Или, что то же самое
=СЧЁТ(A:A )+СУММ({-1;1}*(ЧАСТОТА(A1:A99 ;A1:A99 )>{0;1}))
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Вариантов много. Но большинство из них тоже тормознутые Попробуйте так Кол-во различных неуникальных кодов
=СУММ(--(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Кол-во "лишних" кодов (в массиве 1,1 ,2,2,2,2 лишних 4 штуки)
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))
Кол-во дубликатов вообще
=СЧЁТ(A:A )+СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>0))-СУММ(-(ЧАСТОТА(A1:A99 ;A1:A99 )>1))
Или, что то же самое
=СЧЁТ(A:A )+СУММ({-1;1}*(ЧАСТОТА(A1:A99 ;A1:A99 )>{0;1}))
Автор - _Boroda_ Дата добавления - 12.06.2019 в 22:46
rtv206
Дата: Пятница, 14.06.2019, 11:42 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , Спасибо, буду пробовать
_Boroda_ , Спасибо, буду пробоватьrtv206
Ответить
Сообщение _Boroda_ , Спасибо, буду пробоватьАвтор - rtv206 Дата добавления - 14.06.2019 в 11:42
rtv206
Дата: Четверг, 20.06.2019, 22:55 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Подскажите, пожалуйста, других способов нет? Очень сильно тормозит при большом количестве значений. Макросом например считать количество ячеек с условным форматированием?
Подскажите, пожалуйста, других способов нет? Очень сильно тормозит при большом количестве значений. Макросом например считать количество ячеек с условным форматированием? rtv206
Ответить
Сообщение Подскажите, пожалуйста, других способов нет? Очень сильно тормозит при большом количестве значений. Макросом например считать количество ячеек с условным форматированием? Автор - rtv206 Дата добавления - 20.06.2019 в 22:55
sboy
Дата: Пятница, 21.06.2019, 09:25 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
с помощью Power Query
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"] }[Content] [Столбец1] ,
dupl = Table.FromRecords({[Дубликаты =List.Count(Источник)-List.Count(List.Distinct(Источник))] })
in
dupl
с помощью Power Query
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"] }[Content] [Столбец1] ,
dupl = Table.FromRecords({[Дубликаты =List.Count(Источник)-List.Count(List.Distinct(Источник))] })
in
dupl
sboy
Яндекс: 410016850021169
Ответить
Сообщение с помощью Power Query [vba]
let Источник = Excel.CurrentWorkbook(){[Name ="Таблица1"]}[Content ][Столбец1 ]; dupl = Тable.FromRecords({[Дубликаты =List.Count(Источник )-List.Count(List.Distinct(Источник ))]})in dupl
[/vba]Автор - sboy Дата добавления - 21.06.2019 в 09:25
_Boroda_
Дата: Пятница, 21.06.2019, 11:46 |
Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Ловите макросом с кнопки
Sub KolDub()
c_ = 1
r0_ = 1
n_ = Cells(Rows.Count, c_).End(3 ).Row - r0_ + 1
ar = Cells(r0_, c_).Resize(n_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
With slov1
For i = 1 To n_
If .exists(ar(i, 1 )) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, 1 ))
Else
aaa = .Item(ar(i, 1 ))
End If
Next i
End With
Cells(1 , 6 ) = z_ + slov2.Count
End Sub
Ловите макросом с кнопки
Sub KolDub()
c_ = 1
r0_ = 1
n_ = Cells(Rows.Count, c_).End(3 ).Row - r0_ + 1
ar = Cells(r0_, c_).Resize(n_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
With slov1
For i = 1 To n_
If .exists(ar(i, 1 )) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, 1 ))
Else
aaa = .Item(ar(i, 1 ))
End If
Next i
End With
Cells(1 , 6 ) = z_ + slov2.Count
End Sub
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ловите макросом с кнопки [vba]
Sub KolDub() c_ = 1 r0 _ = 1 n_ = Cells(Rows.Count , c_ ).End(3).Row - r0 _ + 1 ar = Cells(r0 _ , c_ ).Resize(n_ ) Set slov1 = CreateObject("Scripting.Dictionary") Set slov2 = CreateObject("Scripting.Dictionary") With slov1 For i = 1 To n_ If .exists(ar(i , 1)) Then z_ = z_ + 1 aaa = slov2 .Item(ar(i , 1)) Else aaa = .Item(ar(i , 1)) End If Next i End With Cells(1, 6) = z_ + slov2.CountEnd Sub
[/vba] Автор - _Boroda_ Дата добавления - 21.06.2019 в 11:46
rtv206
Дата: Суббота, 22.06.2019, 13:10 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , как прописать чтобы поиск дубликатов был в определенном диапазоне? Например в столбцах c E по Z.
_Boroda_ , как прописать чтобы поиск дубликатов был в определенном диапазоне? Например в столбцах c E по Z.rtv206
Ответить
Сообщение _Boroda_ , как прописать чтобы поиск дубликатов был в определенном диапазоне? Например в столбцах c E по Z.Автор - rtv206 Дата добавления - 22.06.2019 в 13:10
_Boroda_
Дата: Вторник, 25.06.2019, 09:06 |
Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Если ответов нет, то скорее всего что-то не так в вопросе. В Вашем вопросе по крайней мере два нетака - 1, Нет файла-примера с данными в столбцах Е:Z 2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а?
Если ответов нет, то скорее всего что-то не так в вопросе. В Вашем вопросе по крайней мере два нетака - 1, Нет файла-примера с данными в столбцах Е:Z 2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а? _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Если ответов нет, то скорее всего что-то не так в вопросе. В Вашем вопросе по крайней мере два нетака - 1, Нет файла-примера с данными в столбцах Е:Z 2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а? Автор - _Boroda_ Дата добавления - 25.06.2019 в 09:06
rtv206
Дата: Вторник, 25.06.2019, 14:49 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Прикладываю файл примера)
Прикладываю файл примера) rtv206
Ответить
Сообщение Прикладываю файл примера) Автор - rtv206 Дата добавления - 25.06.2019 в 14:49
rtv206
Дата: Вторник, 25.06.2019, 14:50 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а?
Да, а тоже является дубликатом.
2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а?
Да, а тоже является дубликатом.rtv206
Ответить
Сообщение 2. Не определено понятие дубликатов в разных столбцах - если в столбце Е значения а,в,в; в столбце F значения с,d,а, то понятно, что в - дубликат, но вот дубликат ли а?
Да, а тоже является дубликатом.Автор - rtv206 Дата добавления - 25.06.2019 в 14:50
_Boroda_
Дата: Вторник, 25.06.2019, 15:20 |
Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Во, другое дело! Так хотели?
Sub KolDub()
c0_ = 5
nc_ = Cells(1 ).SpecialCells(xlLastCell).Column - c0_ + 1
If nc_ < 1 Then Exit Sub
r0_ = 1
nr_ = Cells(1 ).SpecialCells(xlLastCell).Row - r0_ + 1
If nr_ < 1 Then Exit Sub
ar = Cells(r0_, c0_).Resize(nr_, nc_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
With slov1
For i = 1 To nr_
For j = 1 To nc_
If Not IsEmpty (ar(i, j)) Then
If .exists(ar(i, j)) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, j))
Else
aaa = .Item(ar(i, j))
End If
End If
Next j
Next i
End With
Cells(1 , 2 ) = z_ + slov2.Count
End Sub
Во, другое дело! Так хотели?
Sub KolDub()
c0_ = 5
nc_ = Cells(1 ).SpecialCells(xlLastCell).Column - c0_ + 1
If nc_ < 1 Then Exit Sub
r0_ = 1
nr_ = Cells(1 ).SpecialCells(xlLastCell).Row - r0_ + 1
If nr_ < 1 Then Exit Sub
ar = Cells(r0_, c0_).Resize(nr_, nc_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
With slov1
For i = 1 To nr_
For j = 1 To nc_
If Not IsEmpty (ar(i, j)) Then
If .exists(ar(i, j)) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, j))
Else
aaa = .Item(ar(i, j))
End If
End If
Next j
Next i
End With
Cells(1 , 2 ) = z_ + slov2.Count
End Sub
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Во, другое дело! Так хотели? [vba]
Sub KolDub() c0 _ = 5 nc_ = Cells(1).SpecialCells(xlLastCell ).Column - c0 _ + 1 If nc_ < 1 Then Exit Sub r0 _ = 1 nr_ = Cells(1).SpecialCells(xlLastCell ).Row - r0 _ + 1 If nr_ < 1 Then Exit Sub ar = Cells(r0 _ , c0 _ ).Resize(nr_ , nc_ ) Set slov1 = CreateObject("Scripting.Dictionary") Set slov2 = CreateObject("Scripting.Dictionary") With slov1 For i = 1 To nr_ For j = 1 To nc_ If Not IsEmpty(ar(i , j )) Then If .exists(ar(i , j )) Then z_ = z_ + 1 aaa = slov2 .Item(ar(i , j )) Else aaa = .Item(ar(i , j )) End If End If Next j Next i End With Cells(1, 2) = z_ + slov2.CountEnd Sub
[/vba] Автор - _Boroda_ Дата добавления - 25.06.2019 в 15:20
rtv206
Дата: Четверг, 27.06.2019, 01:08 |
Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , Спасибо огромное! Буду тестировать))))
_Boroda_ , Спасибо огромное! Буду тестировать))))rtv206
Ответить
Сообщение _Boroda_ , Спасибо огромное! Буду тестировать))))Автор - rtv206 Дата добавления - 27.06.2019 в 01:08
rtv206
Дата: Суббота, 07.12.2019, 17:26 |
Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , при количестве заполненных ячеек 200 тыс, много времени уходит на проверку(( Не подскажете есть ли другой способ, гораздо быстрее?
_Boroda_ , при количестве заполненных ячеек 200 тыс, много времени уходит на проверку(( Не подскажете есть ли другой способ, гораздо быстрее?rtv206
Ответить
Сообщение _Boroda_ , при количестве заполненных ячеек 200 тыс, много времени уходит на проверку(( Не подскажете есть ли другой способ, гораздо быстрее?Автор - rtv206 Дата добавления - 07.12.2019 в 17:26
_Boroda_
Дата: Суббота, 07.12.2019, 20:35 |
Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Много - это сколько? У меня далеко не самая мощная машина, но 10 столбцов по 20 000 ячеек в каждом считает 0,84 секунды Да, если у Вас в файле есть Условное форматирование на проверку задвоений этих 200 000 ячеек, то уберите его, это как раз причина тормозов
Много - это сколько? У меня далеко не самая мощная машина, но 10 столбцов по 20 000 ячеек в каждом считает 0,84 секунды Да, если у Вас в файле есть Условное форматирование на проверку задвоений этих 200 000 ячеек, то уберите его, это как раз причина тормозов _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Много - это сколько? У меня далеко не самая мощная машина, но 10 столбцов по 20 000 ячеек в каждом считает 0,84 секунды Да, если у Вас в файле есть Условное форматирование на проверку задвоений этих 200 000 ячеек, то уберите его, это как раз причина тормозов Автор - _Boroda_ Дата добавления - 07.12.2019 в 20:35
rtv206
Дата: Воскресенье, 08.12.2019, 15:53 |
Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , пончо, спасибо, попробую)
_Boroda_ , пончо, спасибо, попробую)rtv206
Ответить
Сообщение _Boroda_ , пончо, спасибо, попробую)Автор - rtv206 Дата добавления - 08.12.2019 в 15:53
rtv206
Дата: Воскресенье, 08.12.2019, 18:27 |
Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_ , используя макрос из Сообщение № 14 Количество значений 110236 подсчет дубликатов идет 3,5 минуты. Все условное форматирование отключено. Вес файла 600 кБ. Прикладываю ссылку на ГуглДискMy WebPage
_Boroda_ , используя макрос из Сообщение № 14 Количество значений 110236 подсчет дубликатов идет 3,5 минуты. Все условное форматирование отключено. Вес файла 600 кБ. Прикладываю ссылку на ГуглДискMy WebPage rtv206
Ответить
Сообщение _Boroda_ , используя макрос из Сообщение № 14 Количество значений 110236 подсчет дубликатов идет 3,5 минуты. Все условное форматирование отключено. Вес файла 600 кБ. Прикладываю ссылку на ГуглДискMy WebPage Автор - rtv206 Дата добавления - 08.12.2019 в 18:27
RAN
Дата: Воскресенье, 08.12.2019, 22:12 |
Сообщение № 20
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Поменял порядок циклов, и погонял. Результат не утешительный.
Sub KolDub()
Dim t!, tt!
t = Timer
c0_ = 5
nc_ = Cells(1 ).SpecialCells(xlLastCell).Column - c0_ + 1
If nc_ < 1 Then Exit Sub
r0_ = 1
nr_ = Cells(1 ).SpecialCells(xlLastCell).Row - r0_ + 1
If nr_ < 1 Then Exit Sub
ar = Cells(r0_, c0_).Resize(nr_, nc_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
tt = Timer
With slov1
For j = 1 To nc_
For i = 1 To nr_
If Not IsEmpty (ar(i, j)) Then
If .exists(ar(i, j)) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, j))
Else
aaa = .Item(ar(i, j))
End If
End If
Next
Debug .Print j & "j " & Format (Timer - tt, "0.00" )
tt = Timer
DoEvents
Next
End With
Debug .Print "end " & Format (Timer - t, "0.00" )
Cells(1 , 2 ) = z_ + slov2.Count
End Sub
1j 0,40 2j 1,16 3j 1,88 4j 2,65 5j 3,53 6j 4,60 7j 5,66 8j 6,51 9j 7,34 10j 8,14 11j 8,98 12j 9,80 13j 10,63 14j 11,53 15j 12,31 16j 13,20 17j 13,98 18j 14,82 19j 15,73 20j 16,47 21j 17,27 22j 18,11 23j 18,92 24j 20,02 25j 22,44 26j 21,63 27j 22,48 28j 19,68 29j 20,22 30j 20,85 31j 21,53 end 392,59 При этом, волею судеб _Boroda_ , последние 4 столбца пустые, и время на их обработку меня вообще ставит в тупик.
Поменял порядок циклов, и погонял. Результат не утешительный.
Sub KolDub()
Dim t!, tt!
t = Timer
c0_ = 5
nc_ = Cells(1 ).SpecialCells(xlLastCell).Column - c0_ + 1
If nc_ < 1 Then Exit Sub
r0_ = 1
nr_ = Cells(1 ).SpecialCells(xlLastCell).Row - r0_ + 1
If nr_ < 1 Then Exit Sub
ar = Cells(r0_, c0_).Resize(nr_, nc_)
Set slov1 = CreateObject ("Scripting.Dictionary" )
Set slov2 = CreateObject ("Scripting.Dictionary" )
tt = Timer
With slov1
For j = 1 To nc_
For i = 1 To nr_
If Not IsEmpty (ar(i, j)) Then
If .exists(ar(i, j)) Then
z_ = z_ + 1
aaa = slov2.Item(ar(i, j))
Else
aaa = .Item(ar(i, j))
End If
End If
Next
Debug .Print j & "j " & Format (Timer - tt, "0.00" )
tt = Timer
DoEvents
Next
End With
Debug .Print "end " & Format (Timer - t, "0.00" )
Cells(1 , 2 ) = z_ + slov2.Count
End Sub
1j 0,40 2j 1,16 3j 1,88 4j 2,65 5j 3,53 6j 4,60 7j 5,66 8j 6,51 9j 7,34 10j 8,14 11j 8,98 12j 9,80 13j 10,63 14j 11,53 15j 12,31 16j 13,20 17j 13,98 18j 14,82 19j 15,73 20j 16,47 21j 17,27 22j 18,11 23j 18,92 24j 20,02 25j 22,44 26j 21,63 27j 22,48 28j 19,68 29j 20,22 30j 20,85 31j 21,53 end 392,59 При этом, волею судеб _Boroda_ , последние 4 столбца пустые, и время на их обработку меня вообще ставит в тупик. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Поменял порядок циклов, и погонял. Результат не утешительный. [vba]
Sub KolDub() Dim t undefined, tt undefined t = Timer c0 _ = 5 nc_ = Cells(1).SpecialCells(xlLastCell ).Column - c0 _ + 1 If nc_ < 1 Then Exit Sub r0 _ = 1 nr_ = Cells(1).SpecialCells(xlLastCell ).Row - r0 _ + 1 If nr_ < 1 Then Exit Sub ar = Cells(r0 _ , c0 _ ).Resize(nr_ , nc_ ) Set slov1 = CreateObject("Scripting.Dictionary") Set slov2 = CreateObject("Scripting.Dictionary") tt = Timer With slov1 For j = 1 To nc_ For i = 1 To nr_ If Not IsEmpty(ar(i , j )) Then If .exists(ar(i , j )) Then z_ = z_ + 1 aaa = slov2 .Item(ar(i , j )) Else aaa = .Item(ar(i , j )) End If End If Next Debug.Print j & "j " & Format(Timer - tt , "0.00") tt = Timer DoEvents NextEnd WithDebug.Print "end " & Format(Timer - t , "0.00")Cells(1, 2) = z_ + slov2.CountEnd Sub
[/vba] 1j 0,40 2j 1,16 3j 1,88 4j 2,65 5j 3,53 6j 4,60 7j 5,66 8j 6,51 9j 7,34 10j 8,14 11j 8,98 12j 9,80 13j 10,63 14j 11,53 15j 12,31 16j 13,20 17j 13,98 18j 14,82 19j 15,73 20j 16,47 21j 17,27 22j 18,11 23j 18,92 24j 20,02 25j 22,44 26j 21,63 27j 22,48 28j 19,68 29j 20,22 30j 20,85 31j 21,53 end 392,59 При этом, волею судеб _Boroda_ , последние 4 столбца пустые, и время на их обработку меня вообще ставит в тупик. Автор - RAN Дата добавления - 08.12.2019 в 22:12