Допустим, у меня есть таблица с датами (все календарные даты на 2024 год) и именами (разделенными на столбцы):
У меня также есть список имен некоторых сотрудников (нынешние сотрудники, имена могут быть изменены в будущем):
Я хотел бы проверить, находится ли сотрудник из листа «Сотрудники» (например, «Aaa») в листе/таблице AllNames на точную дату. И если да, то выведите их имя (или несколько имен, если для этой даты найдено несколько сотрудников) рядом с этой датой:
календарь
Формат столбцов, листов и строк не имеет значения.
=IF(COUNTIF(AllNames!2:2,Employees!A:A)>0,"Yes","No")
Я попробовал это, и оно показывает, найдено ли имя в таблице AllNames, но это моя основная идея, которая не получила дальнейшего развития.
Вы можете попробовать использовать следующую формулу:
=MAP(A1:A34,LAMBDA(b,
LET(a, TOCOL(Employees!A:A,1),
TEXTJOIN(", ",1,IF(FILTER(AllNames!B2:G7,AllNames!A2:A7=b,"")=a,a,"")))))
Но здесь лучше использовать Structured References
он же Tables
, а не весь массив. Поэтому преобразуйте каждый источник в таблицах AllNames
и Employees
в таблицы.
=MAP(A1:A34,LAMBDA(b,
LET(a, TOCOL(Employees,1),
TEXTJOIN(", ",1,IF(FILTER(DROP(AllNames,,1),TAKE(AllNames,,1)=b,"")=a,a,"")))))
А если у вас нет доступа к вспомогательным функциям LAMBDA()
, вы можете использовать следующее:
=IFERROR(TEXTJOIN(", ",1,XLOOKUP(INDEX(AllNames[[Name1]:[Name6]],MATCH(Calendar!A1,AllNames[Date],0),),Employees[Emp],Employees[Emp],"")),"")
Рад знать, что это сработало. Спасибо, что поделились ценным отзывом, это полезно знать!
Формула в I2
:
=GROUPBY(TOCOL(IFS(B2:D4<>"",A2:A4),3),TOCOL(B2:D4,1),ARRAYTOTEXT,,0,,COUNTIF(F2:F4,TOCOL(B2:D4,1)))
Немного многословно:
=LET(
comment_1, "Adjust the following to match max names per date",
cols_with_names, 'All Names'!$B:$AA,
dates, 'All Names'!$A2:INDEX('All Names'!$A:$A, COUNTA('All Names'!$A:$A)),
current_employees, TOCOL(Employees!A:A, 1),
HSTACK(
dates,
MAP(
dates,
LAMBDA(date_,
LET(
names, TOCOL(INDEX(cols_with_names, ROW(date_), ), 1),
current, FILTER(names, ISNUMBER(XMATCH(names, current_employees))),
IFERROR(ARRAYTOTEXT(current), "No current employees")
)
)
)
)
)
Это, добрый сэр, работает как шарм. Большое спасибо!