Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Простенький вопрос по VBA (Excel) / 6 сообщений из 6, страница 1 из 1
25.11.2004, 12:45:31
    #32799435
Anton.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
Есть столбец с текстовыми значениями. Как проще всего получить список уникальных значений столбца, отсортированных по возрастанию?
(Подобный список можно увидеть в автофильтре для данного столбца)
...
Рейтинг: 0 / 0
25.11.2004, 13:14:37
    #32799528
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
автофильтр не поможет, так как excel сам формирует этот список ( имхо)
можно так
1. сортировка столбца
2. определения диапазона поиска что бы не бегать по 65к строкам
3. обход диапазона
4. Dictionary.add
4.1 dictionary.exists
...
Рейтинг: 0 / 0
25.11.2004, 13:18:37
    #32799538
Anton.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
big-duke:
Должны же быть какие-то встроенные функции. Например чтобы посчитать количество уникальных значений в столбце. Наверняка ведь есть, просто я не нашел :(

Похоже что придется все во вложенных циклах делать.
...
Рейтинг: 0 / 0
25.11.2004, 13:51:21
    #32799620
Anton.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
Есть у меня некоторые мысли по этому поводу. Знатоки подскажите как правильно сделать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim r As Range ' Объявляем переменную, в которой будет уникальный список
' Теперь переберем все значения исходного диапазона в цикле:
For Each i In Range("C:C")
  ' Если в r еще нет i ...  
  if not (i in r) then ' Такая конструкция в VBA не работает :(
    КАК-ТО_ДОБАВЛЯЕМ_i_В_r ' Подскажите как
  End If 
Next
...
Рейтинг: 0 / 0
25.11.2004, 15:46:35
    #32799978
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
Держи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Function GetUniqueValues(sourceRange As Range) As Variant()
    Dim w As Worksheet
    Dim r As Range
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    Set w = Worksheets.Add
    Set r = w.Range("A1")
    sourceRange.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=r, Unique:=True
    r.CurrentRegion.Sort r, xlAscending
    GetUniqueValues = r.CurrentRegion.Value
    w.Delete
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Function
...
Рейтинг: 0 / 0
26.11.2004, 11:03:52
    #32800978
Anton.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простенький вопрос по VBA (Excel)
PA:

Спасибо, это как раз то что нужно!

Unique:=True - вот чего мне не хватало!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Простенький вопрос по VBA (Excel) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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