
Это вопрос, который мне, возможно, будет трудно объяснить, поэтому отнеситесь ко мне с пониманием.
На одном листе у меня есть столбец с несколькими ячейками, некоторые из которых пустые, некоторые имеют одно значение, а некоторые имеют более одного значения. На другом листе у меня есть список этих значений с соответствующим домом. Вот пример того, с чем я работаю:
Лист1:
C1: Team Names
C2: crimson-tide, bulldogs
C3: bulldogs
C4: (blank)
C5: canucks
Лист2:
A1: Football B1: Basketball C1: Hockey
A2: crimson-tide B2: celtics C2: maple-leafs
A3: bulldogs B3: mavericks C3: oilers
A4: tigers B4: gonzaga-bulldogs C4: canucks
A5: longhorns B5: warriors C5: bruins
Ожидаемый результат на Листе 1:
D2: Football
D3: Football
D4: No Sport Found
D5: Hockey
Фактический результат:
D2: (blank)
D3: FootballBasketBall
D4: (blank)
D5: Hockey
Я хочу выполнить итерацию по Sheet1!C2:C5, и любое значение, которое имеет соответствие на Sheet2!A2:C5, отобразит соответствующий заголовок из Sheet2!A1:C1. Например, Sheet1!C2 скажет 'Football', поскольку crimson-tide или bulldogs находятся под заголовком football на Sheet2!A1.
Что может быть важно или неважно добавить: ни одно значение в Sheet1!C не будет иметь команду, которая будет в другом заголовке. Crimson-tide будет только под футбольным заголовком на Sheet2, а не под обоими заголовками футбола и баскетбола, например. До сих пор я мог показать результат True/False только если команда в столбце C совпадает с командой на Sheet2. Я не могу понять, как отобразить соответствующий заголовок. Пожалуйста, помогите!
решение1
Попробуйте ввести следующую формулу в ячейкуD2
=LET(
_S2Sports, Sheet2!A$2:C$5,
_Sports, TOCOL(IFS(_S2Sports<>"",Sheet2!A$1:C$1),2,1),
_Teams, TOCOL(_S2Sports,1,1),
_Match, XLOOKUP(TEXTSPLIT(C2,,", "),_Teams,_Sports,"No Team Found"),
IFERROR(TEXTJOIN("|",1,UNIQUE(_Match)),"No Sport Found"))
Используя одну формулу динамического массива:
=LET(
_S2Sports, Sheet2!A$2:C$5,
_Sports, TOCOL(IFS(_S2Sports<>"",Sheet2!A$1:C$1),2,1),
_Teams, TOCOL(_S2Sports,1,1),
BYROW(C2:C12, LAMBDA(x, LET(_Match, XLOOKUP(TEXTSPLIT(x,,", "),_Teams,_Sports,"No Team Found"),
IFERROR(TEXTJOIN("|",1,UNIQUE(_Match)),"No Sport Found")))))
Если у вас нет доступа к TOCOL()
&, TEXTSPLIT()
то:
=LET(
_Sports, Sheet2!$A$2:$C$5,
_Found, N(ISNUMBER(SEARCH(", "&_Sports&", ",", "&$C2&", "))),
_MatrixCal, MMULT(SEQUENCE(,ROWS(_Sports))^0,_Found),
_Output, FILTER(Sheet2!$A$1:$C$1,_MatrixCal,"No Team Found"),
IF(C2="","No Sport Found",TEXTJOIN("|",,_Output)))