Количество уникальных значений в области (Excel)

Программирование на Visual Basic for Applications
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Количество уникальных значений в области (Excel)

Сообщение alibek » 25.03.2008 (Вт) 21:12

Что-то никак не могу придумать хорошее решение :)

Имеется область на листе, она отсортирована.
Нужно подсчитать количество уникальных значений в области.
Желательно, чтобы это были какие-то встроенные функции, потому что перебор будет слишком долгим (в области будет несколько сотен или тысяч строк).
Lasciate ogni speranza, voi ch'entrate.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 25.03.2008 (Вт) 22:04

Если нужно решение формулой, то я уже где-то выкладывал решения. Попробуй поискать здесь или на www.sql.ru в форуме Microsoft Office по автору "KL (XL)". Если нет, то выложу как приду домой.
Привет,
KL

alex_gearbox
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 09.01.2008 (Ср) 21:34
Откуда: г. Волгоград

Сообщение alex_gearbox » 25.03.2008 (Вт) 22:18

Может быть подойдёт извлечение уникальных (не повторяющихся) записей из списка. Но используется дополнительный столбец.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 25.03.2008 (Вт) 22:22

По памяти на англ., если значения числовые, то...

=SUMPRODUCT(--(FREQUENCY(A1:D10,A1:D10)>0))

А может даже....

=SUM(--(FREQUENCY(A1:D10,A1:D10)>0))

Проверить пока не могу, т.к. пишу с мобильного.
Привет,
KL

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.03.2008 (Вт) 22:38

Если это тема "Возможно ли одной формулой сгруппировать массив?", то функции я заценил :) Но реально такое, конечно, не годится, слишком уж тормозит. Перебор или добавление в коллекцию гораздо быстрее.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.03.2008 (Вт) 22:45

Нет, значения текстовые (это названия городов).
Со вспомогательным столбцом тоже не подходит, все в памяти должно быть.
В принципе, с перебором получилось достаточно быстро.
Lasciate ogni speranza, voi ch'entrate.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 26.03.2008 (Ср) 8:14

а если запросом сделать?
Код: Выделить всё
select count(distinct ...) from `Sheet1`
I Have Nine Lives You Have One Only
THINK!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.03.2008 (Ср) 9:38

alibek писал(а):Если это тема "Возможно ли одной формулой сгруппировать массив?", то функции я заценил :) Но реально такое, конечно, не годится, слишком уж тормозит. Перебор или добавление в коллекцию гораздо быстрее.

Нет, ты же спрашиваешь про подсчет, а не вывод всех уникальных значений (тут я тоже не фанат). Посмотри вот этот и след. за ним посты (в твоей ситуации тормозить не должно совсем):
считать уникальные значения
Привет,
KL

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.03.2008 (Ср) 9:49

Да, хороший способ, спасибо :)
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 79

    TopList