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

Вход

Регистрация

Напомнить пароль

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос для нахождения связанных элементов
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
Группа: Проверенные
Ранг: Старожил
Сообщений: 1290
Репутация: 323 ±
Замечаний: 0% ±

365 Beta Channel
может M подойдёт?
[vba]
Код
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
[/vba]
К сообщению приложен файл: 1877502.xlsx (16.5 Kb)
 
Ответить
Сообщениеможет M подойдёт?
[vba]
Код
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
[/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
Группа: Проверенные
Ранг: Старожил
Сообщений: 1290
Репутация: 323 ±
Замечаний: 0% ±

365 Beta Channel
на каком языке

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


как запускать?
это запрос , ищите в запросах и подключениях, ещё рекомендую погуглить про power query
 
Ответить
Сообщение
на каком языке

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


как запускать?
это запрос , ищите в запросах и подключениях, ещё рекомендую погуглить про power query

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

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

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

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