Страницы: 1
RSS
Уникальные и Сортировка по алфавиту, VBA.Collection.
 
Добрый вечер.
1.На первом листе исходные данные, с меткой "Уникальное". Беру диапазон от "Уникального" до ближайщего "Уникального".
2.Выделяю уникальные и сортирую по алфавиту.
3. А вот закинуть tbl в Redim что-то не получается.

Ребята, подскажите пожалуйста, где я ошибаюсь при выводе массива на лист "готово".

Макрос тут
Изменено: Владимир - 03.02.2017 16:11:03 (Накидал.Перезалил)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
Владимир написал: 3. А вот закинуть tbl в Redim что-то не получается.
Проблемы еще до коллекции
Что Вы хотите получить вот этой строкой ?            
Код
Set arr = Range("A" & a & ":F" & lstr)
Если массив значений (потому что далее Вы работаете с этой переменной как с массивом), то правильно так
Код
arr = Range("A" & a & ":F" & lstr).Value
Согласие есть продукт при полном непротивлении сторон
 
Поменял на value ничего не изменилось.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, я правильно понимаю, что у Вас в итоге должен получиться ОДИН столбец из значений строк, помеченных как 'Уникальные', отсортированный по ...как отсортированный? Можете в файле желаемый результат руками накидать
Согласие есть продукт при полном непротивлении сторон
 
У меня должно получится 6 строк, т.к. меток всего 6. А столбцы по-разному в динамике должны загрузиться, согласно количеству уникальных в диапазоне от Уникального до Уникального.
----------
Сейчас накидаю..
Изменено: Владимир - 03.02.2017 16:07:07
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Саня, файл перезалил.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
За динамичную загрузку столбцов, это кусочек отвечает.

Код
For iiii = 1 To .Count
            tbl(i, iiii) = .Item(iiii)
Next
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Код
ReDim tbl(1 To 1, 1 To .Count)
                For iiii = 1 To .Count
                    tbl(i, iiii) = .Item(iiii)

тут косяк в третьей строке. если i > 1, будет ошибка, так как для tbl первое измерение определено 1 To 1.
то есть, по идее, должно быть не  tbl(i, iiii) а  tbl(1, iiii)

дальше логику выгрузки не смотрел детально, но вроде всё должно быть ок
F1 творит чудеса
 
У меня  Uniq не очищается после первого цикла. Пытаюсь Uniq.RemoveAll, но что-то не так... Всё равно какой-то нарастающий итог получается.
--------
Да, Максим, это косяк.
Спасибо за подсказку.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Файл не смотрел. Но, если проблема в этом

Цитата
Владимир написал:
Uniq не очищается после первого цикла
То очистить можно так:
Код
Set Uniq = Nothing

 
Доброй ночи, Юрий.
Проверю лишь в понедельник.. Простите..
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, посмотрите мой вариант. Массив массивов (вдруг кто-то будет искать по такому словосочетанию)
Скрытый текст
Изменено: Sanja - 04.02.2017 10:34:21
Согласие есть продукт при полном непротивлении сторон
 
Саня, спасибо большое.
Обязательно изучу Ваш вариант.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Юрий М, работает. Спасибо
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Наверх