Страницы: 1
RSS
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
 
Друзья, доброго времени суток.

Работаю с большим объемом однотипных данных. Стоит задача, чтобы к каждому уникальному значению присвоить 2 параметра.

Частично задачу реализовал, но есть 2 проблемы, с которыми самостоятельно справиться мне не под силу (((

1. Нашел в сети макрос, который вычленяет уникальные значения и выводит их в отдельный столбец. Работает вроде как исправно, но при большом объеме данных перегружает процессор i7 вешает комп ((( Буду признателен, если кто-нибудь предложит более оптимизированную альтернативу ему.
Скрытый текст

2. Формулой реализована подстановка параметров к каждому уникальному значению. С решением помогли тут. Это работает. Но когда пытаюсь аналогичным способом подставить данные - выходит #ССЫЛКА!.

И наверное 3-я проблема, которая плавающая, иногда ячейка E3 оказывается пустой, хотя в E2, E4 и далее есть данные. Не могу сейчас получить пустоту, но пару раз проскакивала. Грешу на макрос или затуп компа.

Прикрепляю пример моего файла https://yadi.sk/d/p_kZ1x6v2CxNHg. Логика работы такая, столбец А содержит данные, столбец E - только уникальные из столбца А. Столбцы F и G -параметры, которые подставляются в столбцы B-C на основе уникальных значений. Задача, связать столбцы E и K, для подстановки параметров из словаря.

Благодарю.

Много букв, наверное ничего не понятно написал, но как смог - так и объяснил свою проблему.
 
Alez, а вместо того, чтобы гонять народ по ссыдкам, неужели нельзя здесь прикрепить НЕБОЛЬШОЙ файл-пример?
 
Юрий М, нет ((( тут ограничение на 100 кб, а пример оказался больше
 
Ни понятно зачем вам список уникальных значений? Если в столбцы "B" "C" нужно подставить данные из столбцов "L" "M" то это можно сделать без уникальных и вообще без формул.
 
Цитата
Alez написал:
тут ограничение на 100 кб,
Перечитайте правила: уже давно 300. И потенциальным помощникам не нужен ВЕСЬ Ваш рабочий файл. Достаточно НЕБОЛЬШОГО примера строк на 50 в аналогичной структуре.  
 
Сократил данные, прикрепляю

Андрей_26, из этих уникальных значений я и формирую словарь для однотипных данных. Если их нет в словаре, то я буду видеть, для каких значений их необходимо добавить. Как-то так.
Изменено: Alez - 12.03.2020 22:14:59
 
Alez, а файле сплошные ошибки из-за формул. Поменяйте файл - замените формулы на значения. Для этого выделите диапазон, скопируйте, затем правый кллик - специальная вставка - значения.
 
Юрий М, так я с этими ошибками и пришел. В столбцах F и G выделил значения желтым, их задал вручную и они подставляются. Но мне надо связать их со словарем, а при связки выдается ошибка ((( Поэтому и поднял эту тему.
 
Цитата
Alez написал:
Столбцы F и G -параметры, которые подставляются в столбцы B-C
В этих столбцах я вижу только два значения: (в первой строке) томат и свежий. Остальные строки с ошибкой. Что подставлять?
И не лучше бы создавать на отдельном листе новую таблицу из трёх столбцов?
 
Юрий М, слова "томат" и "свежий" должны тянуться из столбцов L и M. Но не тянутся, поэтому я их задал руками для примера, чтобы было понятно, какие данные туда должны идти. Но видимо я всех этим только запутал (((

Сложная у меня конструкция вырисовывается, но логика такая, к уникальным параметрам подставляем значения из словаря, если они имеются, потом из уникальных разбрасываем параметры по основному списку.
Изменено: Alez - 12.03.2020 20:05:49
 
Код
=ПОДСТАВИТЬ(ВПР($E3;$K$2:$M$99;СТОЛБЕЦ()-4;0);" ";"-")

http://prntscr.com/rfewjf
В 3-й строке в столбце F точно такая же формула! Обе протянуть вниз.
Изменено: Hugo - 12.03.2020 20:15:14
 
Цитата
Alez написал:
"томат" и "свежий" должны тянуться из столбцов L и M.
Теперь ещё два столбца добавились, о которых раньше не говорилось ничего. Получается, что у Вас ещё до этапа подстановки в столбцы В и С нужно решить проблему с формулами в столбцах F и G, а уже потом браться за уникальные, иначе нечего подставлять в В и С. Но к теме про поиск уникальных это какое отношение имеет?
 
Hugo, все работает отлично. Спасибо большое за решение.

Остается вопрос только с самим макросом. Уж очень сильно он нагружает проц, работает в 12 потоках ((( Может быть у кого-то есть менее требовательный код ?
 
Есть UDF с таким функционалом на коллекции, и есть на словаре. Будет ли быстрее - может быть. Но нужно понимать что там в каждой ячейке отрабатывает такая UDF, что при большом количестве ячеек долго.
Но в принципе если такая таблица обрабатывается одновременно в файле только одна, то можно замутить публичную коллекцию или словарь (одно на всех) - это должно быть быстрее.
 
Hugo, эмммм. Понятно, что ничего не понятно ...

У меня данных много бывает, самое большое, что было - это порядка 8000 значений, из них уникальных около 1200, если ничего не путаю. Раньше прописывал ручками через фильтрацию, но пришел к выводу, что время от времени попадаются одни и те же значения, поэтому надо как-то автоматизировать процесс, чтобы не выполнять двойную работу изо дня в день.

Знаю, что есть какие-то надстройки на эксель, но это не мой вариант. Не всегда есть под рукой комп, а устанавливать на чужую машину доп софт не всегда удобно.
 
Поясню - можно при первом вызове функции создать коллекцию-словарь с этими уникальными значениями, а при повторных вызовах (может их будет тысячи) уже не тратить время на создание словаря, а сразу брать из него значение.
Но это в том случае, когда диапазон один для всех.
Словарь - это не Ваш словарь, а объект в коде UDF.
Изменено: Hugo - 13.03.2020 13:18:58
Страницы: 1
Наверх