У меня есть таблица того, чего людям не хватает каждый месяц, и чего им не хватает (отмечено как отсутствующее) или у них есть (отмечено знаком «X»), или, если парень в это время не работал, там написано, что не работает. .
Это макет таблицы Раскладка стола
Я хочу превратить это в список со всеми недостающими месяцами для каждой вещи, чтобы это выглядело примерно так.
Year 2023
Worker1_name
NÒMINA:(Months missing here)
REGISTRE DE JORNADA:(Months missing here)
Year 2023
Worker2_name
...
И так далее и тому подобное, хотя я не знаю, возможно ли это.
@Wimanicesir Я все еще учусь, так что не знаю, что это такое, ха-ха-ха
Это не будет виртуальный поиск, потому что ОП, по-видимому, запрашивает все месяцы, которые рабочий отсутствовал в таблице. Я думаю, это будет функция фильтра, основанная на имени работника и текстовом объединении в одну ячейку.
Если не затруднит, не могли бы вы опубликовать данные в виде таблицы уценок?
@nkalvi готово (думаю)
Вот быстрая попытка; Я не знаю, как получить годы, поэтому использовал фиксированную строку. Для этого требуется Microsoft 365. Вы можете проверить шаги, изменив result
на months
, register
и т. д. Найдите ссылки на LET
, LAMBDA
и т. д. здесь: Функция LET — Служба поддержки Microsoft
Введите следующее в первую ячейку для получения результатов:
=LET(
header, A3:T3,
payroll_data, A4:T26,
comment_1, "Take first row, drop the first column when needed",
employee_names, DROP(header, , 1),
months, TEXTBEFORE(CHOOSECOLS(payroll_data, 1), " "),
register, TEXTAFTER(CHOOSECOLS(payroll_data, 1), " "),
result, REDUCE(
"Missing months for employees",
DROP(employee_names, , 1),
LAMBDA(list, name,
LET(
is_missing, CHOOSECOLS(payroll_data, XMATCH(name, employee_names)) =
"Missing",
missing_months, LAMBDA(name, for_register,
for_register & ": " &
ARRAYTOTEXT(
FILTER(months, (register = for_register) * is_missing, "--")
)
),
VSTACK(
list,
VSTACK(
"Year 2023",
name,
missing_months(name, "NÒMINA"),
missing_months(name, "REGISTRE DE JORNADA"),
""
)
)
)
)
),
result
)
В качестве альтернативы вы можете использовать эту формулу, которая возвращает тот же результат на моем листе:
=REDUCE("Missing months for employees",SEQUENCE(,COLUMNS(B1:S1)),
LAMBDA(u,v,VSTACK(u,VSTACK("Year 2023",INDEX(B1:S1,,v),
IFERROR("NÒMINA : "&TEXTJOIN(" ",,TEXTBEFORE(FILTER(A2:A25,
(CHOOSECOLS(B2:S25,v) = "Missing")*
(ISNUMBER(SEARCH("NÒMINA",A2:A25))))," ")),"NÒMINA : "),
IFERROR("REGISTRE DE JORNADA : "&TEXTJOIN(" ",,TEXTBEFORE(FILTER(A2:A25,
(CHOOSECOLS(B2:S25,v) = "Missing")*(ISNUMBER(SEARCH("REGISTRE DE
JORNADA",A2:A25))))," ")),"REGISTRE DE JORNADA :"),""))))
При копировании на мой лист не были показаны недостающие месяцы «REGISTRE DE JORNADA», но это было исправлено, когда я попытался улучшить его внешний вид с помощью интервалов и формата. В итоге это как-то исправили
Разве это не просто функция ВПР?