Страницы: 1
RSS
Из множества значений составить список значений, из которых это множество состоит
 

Добрый день.
У меня не получается макросом сделать сводную информацию типа СЦЕПИТЬЕСЛИ с оставлением только уникальных значений.

Имеется:
Банан  8
Банан  4
Банан  8
Яблоко 10
Яблоко 81
Яблоко 10
Груша 9
Груша 9

Нужно привести к виду:
Банан  8, 4
Яблоко  10, 81
Груша  9

Подскажите пожалуйста как макросом сделать такое.

 
Доброе время суток
Цитата
Бахтиёр написал:
как макросом сделать такое
Использованием словаря в словаре.
Пара ключ значение в основном словаре формируется: ключ название фрукта, значение словарь уникальных количеств.
Соответственно, если нет фрукта в словаре фруктов, то
создаём новую пару в словаре фруктов ключ название, значение новый словарь. Заносим количество в этот словарь как ключ.
Иначе, по названию фрукта получаем доступ к словарю количеств фрукта и добавляем новое количество как ключ.
По окончании чтения исходных, выводим данные по словарям. Уже избито вдоль и поперёк. :)
 
Ну или использовать из копилки UDF VLOOKUPCOUPLE() или аналогичное с других сайтов. Список фруктов можно сделать вручную, или тоже сперва макросом на словаре или коллекции, таких тут уже много писали.
Изменено: Hugo - 26.06.2020 22:04:45
 
Бахтиёр,
Цитата
Hugo: аналогичное с других сайтов
Как сцепить несколько значений в одну ячейку по критерию? СЦЕПИТЬЕСЛИ
Но в таком случае, нужно подготовить/создать уникальный список ключей (фруктов)
Изменено: Jack Famous - 26.06.2020 22:38:20
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Бахтиёр,
как только вы НЕ УНИКАЛЬНЫЕ значения перестанете называть УНИКАЛЬНЫМИ тут же появятся люди, понимающие о чем вы говорите и что вам нужно
если вам нужно из множества значений составить список значений, из которых это множество состоит, то почему бы именно так и не описывать свою задачу?
насколько уникальными являются яблоки (как и бананы) если из несчастных 8 значений они встречаются по 3 раза? в чем их уникальность? как вы ее определяете, по каким правилам русского языка? (я не большой знаток, это не родной мне язык, может расскажете мне?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
это не родной мне язык
Игорь, полагаю, что для Бахтиёр это утверждение тоже верно. Достаточно посмотреть в профиль: Узбекистан, Ташкент.
 
Может Power Query версия подойдёт?
 
Цитата
Ігор Гончаренко: как только вы НЕ УНИКАЛЬНЫЕ значения перестанете называть УНИКАЛЬНЫМИ
а мне кажется, что в общем, Бахтиёр правильно выразился, только не с оставлением только, а с получением "уникальных" (списка уникальных)
Название "из множества значений составить список значений, из которых это множество состоит", конечно, верное, но, по-моему, слишком витиеватое (к тому же не описывает момент "словаря в словаре")
Я бы назвал "Из общего списка товаров получить уникальный список с уникальным перечислением количества каждого"

P.S.: решениЯ давно получены, автор молчит, и я не вижу смысла "вкладываться" в эту тему дальше  :D
Изменено: Jack Famous - 27.06.2020 10:24:02
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Извиняюсь за несвоевременный ответ. Согласен, что в названии темы формулировка вопроса была не совсем точной. Посмотрю варианты решения в предложенных ссылках. Спасибо всем.
Изменено: Бахтиёр - 29.06.2020 18:46:50
 
Решение со словарем словарей:
Код
Sub dddd()
Set dic = CreateObject("Scripting.Dictionary")
mas = [D4].CurrentRegion.Value
For i = 1 To UBound(mas)
    Set dic(mas(i, 1)) = CreateObject("Scripting.Dictionary")
Next
For k = 1 To UBound(mas)
    dic(mas(k, 1))(mas(k, 2)) = ""
Next
For Each x In dic
    s = Join(dic(x).keys, ", ")
    dic(x).RemoveAll
    dic(x) = s
Next
[H9].Resize(, dic.Count).Value = dic.keys
[H10].Resize(, dic.Count).Value = dic.items
End Sub
Изменено: Бахтиёр - 01.07.2020 09:39:49
Страницы: 1
Наверх