Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Макрос для нахождения связанных элементов - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Макрос для нахождения связанных элементов
Unforcer Дата: Среда, 21.06.2023, 11:41 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Добрый день. Прошу помощи.
Необходимо решить задачку: имеются столбцы с указанием элемента и с каким элементом он связан (в примере это столбцы 1 и 2). Нужно получить результат (столбец 3) - элемент A связан с B, B связан с C, С c D, E с A. I связан с J, J с B, поэтому результат такой связки должен быть A,B,C,D,E,I,J.
F,G,H соответственно связаны только друг с другом.
Заранее спасибо за помощь
К сообщению приложен файл: 7185465.xlsx (8.3 Kb)
 
Ответить
СообщениеДобрый день. Прошу помощи.
Необходимо решить задачку: имеются столбцы с указанием элемента и с каким элементом он связан (в примере это столбцы 1 и 2). Нужно получить результат (столбец 3) - элемент A связан с B, B связан с C, С c D, E с A. I связан с J, J с B, поэтому результат такой связки должен быть A,B,C,D,E,I,J.
F,G,H соответственно связаны только друг с другом.
Заранее спасибо за помощь

Автор - Unforcer
Дата добавления - 21.06.2023 в 11:41
прохожий2019 Дата: Среда, 21.06.2023, 16:32 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1398
Репутация: 364 ±
Замечаний: 0% ±

365 Beta Channel
может M подойдёт?

let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    nms = Table.ColumnNames(from),
    cmb = Table.Distinct(from & Table.RenameColumns(from,List.Zip({nms,List.Reverse(nms)}))),
    grp = Table.Group(cmb, "Точки1", {"Value", each [Точки2]}),
    lst=List.Buffer(Table.ToList(grp,(x)=>{x{0}}&x{1})),
    
    f=(x,y)=>List.Distinct(List.Combine(List.Select(y,(i)=>List.ContainsAny(i,x))&{x})),
    g=(x,y)=>List.Select(y,(i)=>not List.ContainsAny(i,x)),
    gen=List.Generate(  ()=>[a=lst,b=a{0}?,c=f(b,a),d=g(c,a)],
                        (x)=>x[b]<>null,
                        (x)=>[a=x[d],b=a{0}?,c=f(b,a),d=g(c,a)],
                        (x)=>Text.Combine(x[c],","))
in
    gen

К сообщению приложен файл: 1877502.xlsx (16.5 Kb)
 
Ответить
Сообщениеможет M подойдёт?
[vba]
let    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content];    nms = Тable.ColumnЧames(from);    cmb = Тable.Distinct(from & Тable.RenameColumns(from;List.Zip({nms;List.Reverse(nms)})));    grp = Тable.Group(cmb; "Точки1"; {"Value"; each [Точки2]});    lst=List.Buffer(Тable.ToList(grp;(x)=>{x{0}}&x{1}));        f=(x;y)=>List.Distinct(List.Combine(List.Select(y;(i)=>List.ContainsAny(i;x))&{x}));    g=(x;y)=>List.Select(y;(i)=>not List.ContainsAny(i;x));    gen=List.Generate(  ()=>[a=lst;b=a{0}?;c=f(b;a);d=g(c;a)];                        (x)=>x[b]<>null;                        (x)=>[a=x[d];b=a{0}?;c=f(b;a);d=g(c;a)];                        (x)=>Тext.Combine(x[c];","))in    gen
[/vba]

Автор - прохожий2019
Дата добавления - 21.06.2023 в 16:32
Unforcer Дата: Среда, 21.06.2023, 17:00 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

прохожий2019, подскажите на каком языке реализовано и как запускать?
 
Ответить
Сообщениепрохожий2019, подскажите на каком языке реализовано и как запускать?

Автор - Unforcer
Дата добавления - 21.06.2023 в 17:00
прохожий2019 Дата: Среда, 21.06.2023, 17:04 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1398
Репутация: 364 ±
Замечаний: 0% ±

365 Beta Channel
Цитата Unforcer, 21.06.2023 в 17:00, в сообщении № 3 ( писал(а)):
на каком языке

Цитата прохожий2019, 21.06.2023 в 16:32, в сообщении № 2 ( писал(а)):
может M подойдёт?


Цитата Unforcer, 21.06.2023 в 17:00, в сообщении № 3 ( писал(а)):
как запускать?
это запрос , ищите в запросах и подключениях, ещё рекомендую погуглить про power query
 
Ответить
Сообщение
Цитата Unforcer, 21.06.2023 в 17:00, в сообщении № 3 ( писал(а)):
на каком языке

Цитата прохожий2019, 21.06.2023 в 16:32, в сообщении № 2 ( писал(а)):
может M подойдёт?


Цитата Unforcer, 21.06.2023 в 17:00, в сообщении № 3 ( писал(а)):
как запускать?
это запрос , ищите в запросах и подключениях, ещё рекомендую погуглить про power query

Автор - прохожий2019
Дата добавления - 21.06.2023 в 17:04
msi2102 Дата: Четверг, 22.06.2023, 09:50 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 431
Репутация: 132 ±
Замечаний: 0% ±

Excel 2019
О кроссах нужно сообщать, ответил на Планете
 
Ответить
СообщениеО кроссах нужно сообщать, ответил на Планете

Автор - msi2102
Дата добавления - 22.06.2023 в 09:50
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!