Excel: распечатать точное имя, найденное в списке, для точной даты

Допустим, у меня есть таблица с датами (все календарные даты на 2024 год) и именами (разделенными на столбцы):

AllNames

Дата Имена 01 января Ааа Ббб Ввв 02 января Ксс 03 января Ддд

У меня также есть список имен некоторых сотрудников (нынешние сотрудники, имена могут быть изменены в будущем):

сотрудники

Сотрудники Ааа Ввв Ксс

Я хотел бы проверить, находится ли сотрудник из листа «Сотрудники» (например, «Aaa») в листе/таблице AllNames на точную дату. И если да, то выведите их имя (или несколько имен, если для этой даты найдено несколько сотрудников) рядом с этой датой:

календарь

Дата Математика? 01 января Ааа, ввв 02 января Ксс 03 января -

Формат столбцов, листов и строк не имеет значения.

=IF(COUNTIF(AllNames!2:2,Employees!A:A)>0,"Yes","No")

Я попробовал это, и оно показывает, найдено ли имя в таблице AllNames, но это моя основная идея, которая не получила дальнейшего развития.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
61
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Вы можете попробовать использовать следующую формулу:


=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],"")),"")

Это, добрый сэр, работает как шарм. Большое спасибо!

Michael Cat 10.07.2024 13:39

Рад знать, что это сработало. Спасибо, что поделились ценным отзывом, это полезно знать!

Mayukh Bhattacharya 10.07.2024 13:41

Формула в 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")
                )
            )
        )
    )
)

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