Уменьшение/лямбда-итерация в Excel

Я хотел бы повторить формулу с помощью сокращения/лямбды, чтобы вы могли просто изменить имя первого листа, и оно обновится соответствующим образом.

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

=DROP(UNIQUE(VSTACK(
FILTER('2023-12'!A:A,'2023-12'!A:A<>""),
FILTER('2023-11'!A:A,'2023-11'!A:A<>""),
FILTER('2023-10'!A:A,'2023-10'!A:A<>""),
FILTER('2023-09'!A:A,'2023-09'!A:A<>""),
FILTER('2023-08'!A:A,'2023-08'!A:A<>""),
FILTER('2023-07'!A:A,'2023-07'!A:A<>""),
FILTER('2023-06'!A:A,'2023-06'!A:A<>""),
FILTER('2023-05'!A:A,'2023-05'!A:A<>""),
FILTER('2023-04'!A:A,'2023-04'!A:A<>""),
FILTER('2023-03'!A:A,'2023-03'!A:A<>""),
FILTER('2023-02'!A:A,'2023-02'!A:A<>""),
FILTER('2023-01'!A:A,'2023-01'!A:A<>""))),5)

Подобно тому, как вы можете СУММИРОВАТЬ по нескольким страницам, например =SUM('2023-12:2023-01'!A1), я хотел бы использовать REDUCE LAMBDA, чтобы можно было обновить первый лист с 2023-12 до 2024-01. и т. д., и результат будет соответствующим образом обновлен.

Идея состоит в том, что листы содержат все элементы в столбце A, где новые элементы добавляются почти ежемесячно, а результирующий столбец должен содержать все результаты со всех листов в уникальном списке.

Я надеюсь, что это имеет достаточный смысл.

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

Можете ли вы вместо этого добавить новые данные в существующую таблицу? Возможно, сначала потребуется склеить их все в одну, но в сочетании со столбцом за период это значительно упростит написание и обслуживание формул.

Mark S. 07.03.2024 14:57

В идеале мы хотели бы сохранить отдельные страницы для данных. Есть ли хороший способ создать агрегированную страницу? =FILTER(VSTACK('2024-1:2023-1'!A:A),VSTACK('2024-1:2023-1'!A‌​:A)<>"") выдаст #NUM! из-за превышения количества строк в части формулы VSTACK.

Thiv 07.03.2024 15:47
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
2
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

=LET(startDate,DATE(2023,12,1),
seq,SEQUENCE(3,1,0,-1),
DROP(UNIQUE(REDUCE("",seq,LAMBDA(a,c,VSTACK(a,TOCOL(INDIRECT("'"&TEXT(EDATE(startDate,c),"YYYY-MM")&"'!"&"A:A"),1))))),1))

где дату начала и количество листов можно изменить по мере необходимости.

Использование SheetNames через диспетчер имен в Excel позволило нам полностью автоматизировать процесс, избавив от необходимости вручную корректировать формулы. Используя диспетчер имен для определения «Имен листов» по ​​формуле =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),""), мы создали массив, содержащий все имена листов. Отфильтровав этот массив так, чтобы он включал только имена со знаком «-», мы можем легко интегрировать его в вашу формулу, упрощая процесс. Я ценю вашу помощь в этом и спасибо, что указали нам правильное направление.

Thiv 26.03.2024 22:07

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