Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 32

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

31.03.2010, 16:40. Показов 3448. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Граждане, существует ли какой нибудь программный способ определить количество уникальных записей в списке ?
Т.е. на вход ф-ии поступает диапазон, а на выходе получаем число.
Типа:

есть диапазон:

qw
qw
qw
er
ty
qw

Ф-ия возвращает 3.

Просто ОЧЕНЬ не хочется возиться на васике с динамическими массивами и переборкой всех вариантов.

Заранее снимаю шапку...

Спасибо !!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2010, 16:40
Ответы с готовыми решениями:

Импорт уникальных записей в БД из Excel
Добрый день! На форуме вычитал множество вариантов как можно загрузить из экселя в БД данные через делфи, но того варианта, который...

Количество уникальных записей в БД
Здравствуйте! Есть таблица "Перевозки" (Access, *.mdb, ADOQuery). На форме 2 DateTimePicker, ComboBox, Memo и Button. Нужно: 1)...

Посчитать количество уникальных записей
Добрый день! имеем таблицу: ФИО, тест, результат несколько участников, несколько тестов, у каждого участника может быть несколько...

8
papirus
31.03.2010, 16:52
Используй метод AdvancedFilter (расширенный фильтр) объекта Range для копирования в какой-нибудь промежуточный диапазон только уникальных значений (Range('N1') напр.) . Затем вычисли размер этого диапазона.
Visual Basic
1
Range('N1').Currentregion.Rows.Count
 Аватар для SlavaRus
1124 / 237 / 37
Регистрация: 15.03.2010
Сообщений: 728
31.03.2010, 18:34
Попробуй такой код.

Public Function ЧислоЗаписей(Диапазон As Range, Число As Variant) As Integer
Dim Temp As Range
ЧислоЗаписей = 0
For Each Temp In Диапазон
If Temp.Value = Число Then ЧислоЗаписей = ЧислоЗаписей + 1
Next
End Function
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 32
01.04.2010, 09:54  [ТС]
2Papirus:

Спасибо огромное за идею!
Включил макрос на запись и получил требуемое.
Попробовал 'по мотивам' написать свою фи-ю.
Вот что получилось.
Visual Basic
1
2
3
4
5
6
7
8
9
'Кол-во уникальных значений в диапазоне
Public Function GetUniqueCount(rR As Range) As Long
On Error GoTo 1
rR.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveWorkSheet.Range('II1'), Unique:=True
GetUniqueCount = ActiveWorkSheet.Range('II1').CurrentRegion.Rows.Count
Exit Function
1:
GetUniqueCount = 0
End Function
Но не работает !!! Возвращает 1 ! Причем, когда я этой функции передаю диапазон, она не пишет результат от действия расширенного фильтра в 'II1'
Блин...
:^(
0
papirus
01.04.2010, 10:21
1. Передаваемый Диапазон состоит больше чем из одной строки?
2. При обращении к этой функции какой лист активен?
papirus
01.04.2010, 10:24
Да, и еще.

Должно быть
Visual Basic
1
 GetUniqueCount = ActiveWorkSheet.Range('II1').CurrentRegion.Rows.Count-1
1 строка - это заголовок (кстати, передаваемый диапазон заголовок включает?)
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 32
01.04.2010, 11:03  [ТС]
>>1. Передаваемый Диапазон состоит больше чем из одной строки?
Угу, оно так выглядит:

10 строка, столбец 'А': =GetUniqueCount('A11:A16')
11-16 строка, столбец 'A' - 'W';'W';'W';'T';'T';'T'

По идее ответ должен быть 2.

>>2. При обращении к этой функции какой лист активен?
Текущий.
Фи-я вызывается с того-же листа, где и данные.
Единственно, что макрос лежит не в текущей книге, а вличной ниге макросов.
0
papirus
01.04.2010, 11:22
Еще раз.
Включает ли передаваемый диапазон ЗАГОЛОВОК?
Напр.,
Set rR = ActiveSheet.Range('A1').CurrentRegion 'где
А1 - 'Код'
А2 - 'А'
А3 - 'А'
А4 - 'Б'
А5 - 'В'
А6 - 'А'

Функция получает диапазон rR, т.е. 'А1:А6' - фильтрует в ячейку II1 уникальные значения: А, Б, В - (причем в ячейке II1 будет 'код') и вычисляет количество строк в текущей области = 4, включая заголовок.
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 12
13.05.2010, 17:30
это легко и просто
пусть RNGe - это range
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function FCR(RNGe)
Dim DVc As New Collection, DV As Variant, ss As String
On Error Resume Next
For Each DV In RNGe
   ss = CStr(Trim(DV.Value)): If ss <> '' Then DVc.Add ss, ss
Next
On Error GoTo 0
For Each DV In DVc
   FCR = FCR + 1
Next
End Function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2010, 17:30
Помогаю со студенческими работами здесь

Количество уникальных значений в Excel
Здравствуйте всем! у меня есть таблица с повторяющими данными. Как мне подсчитать количество уникальных значений при включенном...

Нужно вывести количество записей в списке
Нужно вывести(подсчитать) количество записей в списке (linkedlist)

Вывод уникальных записей с таблицы и суммирование дублированых записей с выводом колличества
Доброго времени суток форумчане! Не получается фильтровать записи при выводе с таблицы MYSQL. Нужно вывести уникальные модели и...

RecordSet в VBA Excel не определяет количество записей
RecordSet в VBA Excel почему-то не определяет количество записей, можно ли с этим как-то справиться или как можно определить то, что он...

Выборка уникальных записей
Допустим есть таблица, в ней около 10К записей. Таблица хранит в себе результаты кореляционного анализа, а каждая запись имеет три поля: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru