Страницы: 1
RSS
VBA Счет уникальных значений
 
Добрый день!

Голову сломал. Прошу помощи.

В файле в колонке "А" есть значения. В колонку "D" выбирает уникальные, а в колонку "E" количество этих уникальных.
Но проблема! Уникальное значение с 250-й строки макрос не хватает... Так же побывал, если изменяю количество строк, то все равно одно уникальное значение макрос не берет...

Помогите решить проблему, чтобы выбирало все уникальные  значения в ячейке "А".
Изменено: evgeniy_m - 09.05.2017 11:12:27
 
Массивы
Код
a = d1.keys: b = d1.items

имею размерность 0 to x, а не 1 to x. Поэтому
Код
[d8].Resize(UBound(a) + 1, 2) = Application.Transpose(Array(a, b))

или
Код
[d8].Resize(d1.Count, 2) = Application.Transpose(Array(a, b))
Изменено: RAN - 09.05.2017 11:23:53
 
RAN, как все просто!

Большое Вам спасибо!
 
evgeniy_m, код типа
Код
[d8].Resize(UBound(a), 2)+1 = Application.Transpose(Array(a, b))
лучше не использовать, т.к майкрософт не гарантирует совпадающий порядок в Keys и Items. В вашем случае совпало, но лично я сам на это нарывался.
Лучше циклом:
Код
    ReDim a1(d1.Count - 1, 1)
    For i = 0 To d1.Count - 1
        a1(i, 0) = a(i)
        a1(i, 1) = d1(a(i))
    Next
      [d8] Resize(d1.Count, 2) = a1
и, кстати, цикл быстрее и универсальнее Transpose
Изменено: Михаил С. - 09.05.2017 12:24:19
 
Михаил С., спасибо! Уже протестировал
 
Цитата
Михаил С. написал:
майкрософт не гарантирует совпадающий порядок в Keys и Items
Миш, откуда информация?
 
Вообще-то об этом в спецификации по Dictionary написано. И Алексей (Alex_ST) об этом много раз говорил.
Да и сам я нарвался один раз, когда в словаре более 1000 Key было.
Надежнее Item через ключи вытаскивать.
К тому же вытаскивание итем по ключу практически мгновенно, и не зависит от размера словаря (лично проверял).
Изменено: Михаил С. - 09.05.2017 19:17:09
Страницы: 1
Наверх