Рекурсивная лямбда для объединения полной иерархии родитель-потомок

Мне нужен результат, подобный последнему столбцу на рисунке (Полная иерархия).
Я могу сделать это, создав несколько столбцов поддержки. Но я почти уверен, что это можно сделать, используя рекурсивную лямбду.
Я сделал несколько попыток, но безуспешно.
Может ли кто-нибудь помочь в этом? Спасибо!

столбец A = информация о ребенке
столбец B — информация о родителях
col c to k = xlookup для поиска родителя предыдущего родителя
col L = объединить результаты в один столбец... начиная с верхнего уровня до дочерней строки

Child   Parent
1578123  
10000176    1578123
10000623    10000176
1584885     10000623
1606217     1584885
44000026    10000623
81003755    10000623
1579066     10000176
1603212     1579066
81014694    1603212
1603645     1579066
59000184    1579066
81011826    59000184
81017364    59000184
81014130    1579066
81020541    1579066
81020078    81020541

Думаю, я пытался сделать что-то подобное здесь stackoverflow.com/questions/76627369/…

Tom Sharpe 01.03.2024 16:13
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
1
310
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Использование REDUCE:

 = "> "&IF([@Parent] = "",[@Child],TEXTJOIN(" > ",TRUE,REDUCE([@Parent],SEQUENCE(10),LAMBDA(x,y,VSTACK(XLOOKUP(TAKE(x,1),[Child],[Parent],""),x)))))

ПРИМЕЧАНИЕ. При этом предполагается, что родителей не более 10. Если это слишком мало, измените 10 на то, что вам удобно.


Чтобы показать, что это работает с текстом:

Привет, Скот. Потрясающий! Но, к сожалению, на моем столе это не сработало. У вас есть какие-нибудь подсказки? Мои родительско-дочерние столбцы являются текстовыми... это мешает?

Marcelo 29.02.2024 20:59

@Марсело, должно быть что-то еще, у меня с текстом работает, смотри новое изображение.

Scott Craner 29.02.2024 23:06

@Марсело, см. редактирование. Я немного скорректировал формулу и протестировал ее на структурированной таблице.

Scott Craner 29.02.2024 23:19

Вывод OP также показывает добавленный дочерний элемент. Легко ли это исправить @ScottCraner?

Notus_Panda 01.03.2024 09:48

Рекурсивная версия:

Определите getParent как лямбду:

=IF(Child = "", "", 
GetParent(XLOOKUP(Child, Table1[Child], Table1[Parent], "")) & ">" & Child)

В диспетчере имен это выглядит так:

и воспользуемся формулой

=GetParent([@Child])

Другие вопросы по теме