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


Использование REDUCE:
= "> "&IF([@Parent] = "",[@Child],TEXTJOIN(" > ",TRUE,REDUCE([@Parent],SEQUENCE(10),LAMBDA(x,y,VSTACK(XLOOKUP(TAKE(x,1),[Child],[Parent],""),x)))))
ПРИМЕЧАНИЕ. При этом предполагается, что родителей не более 10. Если это слишком мало, измените 10 на то, что вам удобно.
Чтобы показать, что это работает с текстом:
Привет, Скот. Потрясающий! Но, к сожалению, на моем столе это не сработало. У вас есть какие-нибудь подсказки? Мои родительско-дочерние столбцы являются текстовыми... это мешает?
@Марсело, должно быть что-то еще, у меня с текстом работает, смотри новое изображение.
@Марсело, см. редактирование. Я немного скорректировал формулу и протестировал ее на структурированной таблице.
Вывод OP также показывает добавленный дочерний элемент. Легко ли это исправить @ScottCraner?
Рекурсивная версия:
Определите getParent как лямбду:
=IF(Child = "", "",
GetParent(XLOOKUP(Child, Table1[Child], Table1[Parent], "")) & ">" & Child)
В диспетчере имен это выглядит так:
и воспользуемся формулой
=GetParent([@Child])
Думаю, я пытался сделать что-то подобное здесь stackoverflow.com/questions/76627369/…