Нет функции послед в excel

Обновлено: 07.07.2024

Эта статья является логическим продолжением предыдущего материала про новые динамические массивы (ДМ), появившиеся в Excel в Office 365. Если вы ещё с не ознакомились (кому лень читать - там есть видео), то очень советую сделать это сейчас, чтобы понимать о чём, собственно, идёт речь и как заполучить все эти радости в вашем Excel.

Обновление Office 365, которое подарило Microsoft Excel новый вычислительный движок с поддержкой динамических массивов, также добавило к нашему арсеналу 7 новых функций, заточенных специально для работы с массивами. Про три самых важных функции: СОРТ (SORT) , ФИЛЬТР (FILTER) и УНИК (UNIQUE) я уже писал, а в этой статье хотел разобрать ещё одну весьма приятную обнову - функцию ПОСЛЕД (SEQUENCE) .

Обманчивая простота

Эта функция предназначена для совершенно, на первый взгляд, банальной задачи - генерации числовых последовательностей (рядов, арифметических прогрессий) с определённым шагом и от заданного стартового значения. Синтаксис функции предельно прост:

=ПОСЛЕД( строки ; [столбцы] ; [начало] ; [шаг] )

  • строки - число строк в диапазоне, который надо заполнить числовой последовательностью - это единственный обязательный аргумент;
  • с толбцы - число столбцов в диапазоне (если нужно сгенерить двумерный массив)
  • н ачало - стартовое значение (если не задано, то 1)
  • шаг - шаг изменения ряда (если не задан, то 1)

Последние два аргумента могут быть и дробными, и отрицательными числами при необходимости.

Да, я знаю - выглядит это все как-то скучновато, но не доверяйте первому обманчивому впечатлению. У этой функции есть масса практических вариантов применения - давайте рассмотрим несколько случаев, чтобы вы ухватили идею.

Пример 1. Посимвольный разбор текста

Уверен, вы не раз встречались при заполнении бланков и всевозможных анкет с необходимостью "распатронить" текст на отдельные символы по отдельным ячейкам. С нашей функцией ПОСЛЕД эта задача решается в два счёта:

Разделение текста на символы функцией ПОСЛЕД SEQUENCE

В английской версии это будет

Логика тут простая:

  • Сначала функция ПОСЛЕД формирует простой числовой ряд 1, 2, 3 . N, где N - длина исходного текста, определяемая функцией ДЛСТР (LEN) .
  • Затем функция ПСТР (MID) выдёргивает из исходного текста символы по очереди, используя сгенерированную последовательность как порядковый номер извлекаемого символа.

Для аналогичного разбора даты по ячейкам, придется добавить ещё функцию ТЕКСТ (TEXT) для преобразования даты в текст - иначе на выходе мы получим код даты, а не её саму в привычном виде. Ну, а длину в этом случае мы знаем заранее - 10 символов:

Разбор даты по ячейкам

Пример 2. Сумма каждой N-ой ячейки

Классическая задача про суммирование ячеек с заданным шагом, несколько способов решения которой я уже описывал. С помощью нашей новой функции ПОСЛЕД решается просто и изящно:

Сумма каждой n-ой ячейки

Функция ПОСЛЕД (SEQUENCE) здесь генерит числовую последовательность номеров строк, откуда нам нужно взять данные: 5, 9, 13, 17, 21.

Затем функция ИНДЕКС (INDEX) вытаскивает значения по этим номерам из столбца А, и затем мы их суммируем с помощью СУММ (SUM) .

Пример 3. Трансформация столбца в таблицу

Самый красивый пример - преобразование столбца с данными в двумерную таблицу одной короткой формулой:

Преобразование столбца в таблицу

Здесь функция ПОСЛЕД сначала формирует двумерную последовательность, где каждое число - это, по сути, номер строки из нашей таблицы данных, откуда нужно взять значение для данной ячейки:

Формируем номера строк

Чтобы не привязываться к жёстко прописанному количеству блоков (людей) в таблице - мы используем функцию СЧЁТЗ (COUNTA) , чтобы вычислить их количество.

А затем мы извлекаем данные из левой таблицы по номеру строки с помощью функции ИНДЕКС (INDEX) . (Если вы с ней ещё, не дай бог, не знакомы, то обязательно посмотрите эту статью).

Ну, и для полной картины, преобразование исхдной таблицы в динамическую "умную" даёт нам возможность не думать про её размеры - при добавлении новых данных к ней в будущем они автоматически попадут и в результаты.

Пример 4. Многоуровневая нумерация

Это пример на перезапускающиеся числовые последовательности. В реальной жизни такое часто встречается, например, во вложенной нумерации пунктов 1.1 - 1.2 - 1.3 и т.д.

Допустим, что нам необходимо создать шаблон для заполнения посменного расписания. Причем количество смен и количество сотрудников в смене - величины переменные и должны браться из соответствующих ячеек:

График рабочих смен

Для столбца с номером смены нам нужна последовательность с повторениями каждого числа ряда (номер смены) заданное количество раз (число сотрудников в смене). Это можно легко реализовать формулой:

Вычисляем номер смены

В английской версии это, соответственно :

  1. Функция ПОСЛЕД сначала генерирует числовую последовательность 1, 2, 3 .. 15 (общее число строк, равное произведению количества смен на количество людей в каждой смене)
  2. Мы делим эти числа на число людей в каждой смене и получаем последовательность дробных чисел: 0.2, 0.4, 0.6, 0.8, 1, 1.2 и т.д.
  3. Затем мы округляем эти дробные числа до ближайшего целого функцией ОКРУГЛВВЕРХ (ROUNDUP) .

Для столбца с номерами сотрудников внутри смены нам нужна формула чуть сложнее - с перезапускающейся каждые 5 ячеек заново последовательностью:

Перезапускающаяся последовательность

Здесь мы сначала вычисляем остаток от деления нашей последовательности 1,2,3. 15 на 5 с помощью функции ОСТАТ (MOD) :

Остатки от деления ряда

А затем заменяем нули на 5 - значение из ячейки B4 с помощью функции ЕСЛИ (IF) .

Дополнительно, можно подтянуть к нашему графику еще и имена сотрудников из списка с помощью уже знакомой нам функции ИНДЕКС (INDEX) :

Подтягиваем имена людей в рабочий график

Заключение и выводы

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

Если же вы пока ещё не получили обновление, которое добавляет в ваш Excel динамические массивы и эти новые функции, то когда придет время - вы будете готовы :)

Чтобы просмотреть более подробные сведения о функции, щелкните ее название в первом столбце.

Примечание: Маркер версии обозначает версию Excel, в которой она впервые появилась. В более ранних версиях эта функция отсутствует. Например, маркер версии 2013 означает, что данная функция доступна в выпуске Excel 2013 и всех последующих версиях.

Возвращает заданную дату в числовом формате.

Вычисляет количество дней, месяцев или лет между двумя датами. Эта функция полезна в формулах расчета возраста.

Преобразует дату из текстового формата в числовой.

Преобразует дату в числовом формате в день месяца.

Excel 2013

ДНИ

Возвращает количество дней между двумя датами.

Вычисляет количество дней между двумя датами на основе 360-дневного года.

Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты.

Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев.

Преобразует дату в числовом формате в часы.

Excel 2013

НОМНЕДЕЛИ.ISO

Возвращает номер недели по ISO для заданной даты.

Преобразует дату в числовом формате в минуты.

Преобразует дату в числовом формате в месяцы.

Возвращает количество полных рабочих дней между двумя датами.

Excel 2010

ЧИСТРАБДНИ.МЕЖД

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

Возвращает текущую дату и время в числовом формате.

Преобразует дату в числовом формате в секунды.

Возвращает заданное время в числовом формате.

Преобразует время из текстового формата в числовой.

Возвращает текущую дату в числовом формате.

Преобразует дату в числовом формате в день недели.

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

Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней.

Excel 2010

РАБДЕНЬ.МЕЖД

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

Преобразует дату в числовом формате в год.

Возвращает долю года, которую составляет количество дней между начальной и конечной датами.

Важно: Вычисляемые результаты формул и некоторые функции листа Excel могут несколько отличаться на компьютерах под управлением Windows с архитектурой x86 или x86-64 и компьютерах под управлением Windows RT с архитектурой ARM. Подробнее об этих различиях.

Функция ПОСЛЕДОВ позволяет создать список последовательных чисел в массиве, например 1, 2, 3, 4.

В приведенном ниже примере создан массив из 4 строк и 5 столбцов с помощью формулы =ПОСЛЕДОВ(4;5).

Пример использования функции SEQUENCE с массивом 4 x 5

Примечание: В настоящее время эта функция доступна Microsoft 365 в Current Channel. С июля 2020 г. она будет доступна Microsoft 365 канала Semi-Annual Enterprise Channel. Дополнительные сведения о том, как функции для подписчиков Microsoft 365, см. в этой Microsoft 365.

=ПОСЛЕДОВ(строки;[столбцы];[начало];[шаг])

Количество возвращаемых строк

Количество возвращаемых столбцов

Первое число в последовательности

Величина приращения каждого последующего значения в массиве

Любому отсутствующему необязательному аргументу по умолчанию присваивается значение 1.

Массив может рассматриваться как строка со значениями, столбец со значениями или комбинация строк и столбцов со значениями. В приведенном выше примере массивом для формулы ПОСЛЕДОВ является диапазон C1:G4.

Функция ПОСЛЕДОВ возвращает массив, который будет рассеиваться, если это будет конечным результатом формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши ВВОД. Если ваши вспомогательные данные хранятся в таблице Excel, тогда массив будет автоматически изменять размер при добавлении и удалении данных из диапазона массива, если вы используете структурированные ссылки. Дополнительные сведения см. в статье Поведение рассеянного массива.

Пример

Ниже приведен пример быстрого создания набора данных с использованием функции ПОСЛЕДОВ совместно с функциями ТЕКСТ, ДАТА, ГОД и СЕГОДНЯ, позволяющий получить динамический список месяцев для строки заголовка, в котором исходной датой всегда будет текущий год. Наша формула: =ТЕКСТ(ДАТА(ГОД(СЕГОДНЯ()),ПОСЛЕДОВ(1,6),1),"mmm").

Использование функции ПОСЛЕДОВ с функциями ТЕКСТ, ДАТА, ГОД и СЕГОДНЯ для создания динамического списка месяцев для строки заголовка.

Ниже приведен пример использования в функции ПОСЛЕДОВ вложенных функций ЦЕЛОЕ и СЛЧИС для создания массива из 5 строк и 6 столбцов со случайным набором возрастающих целых чисел. Наша формула: =ПОСЛЕДОВ(5,6,ЦЕЛОЕ(СЛЧИС()*100),ЦЕЛОЕ(СЛЧИС()*100)).

Пример использования функции ПОСЛЕДОВ с вложенными функциями ЦЕЛОЕ и СЛЧИС для создания примера набора данных

Кроме того, можно использовать формулу =ПОСЛЕДОВ(5;1;1001;1000), чтобы создать последовательный список кодов Главной книги (GL) в примерах.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Это перевод главы книги Bill Jelen. Excel Dynamic Arrays Straight to the Point. К содержанию.

Примеры этой главы предназначены для того, чтобы дать вам отправную точку. Но они, конечно же, не исчерпывают всех возможностей использования обычных функций Excel в сочетании с новыми свойствами динамических массивов. Всякий раз, когда функция ожидает скаляр, передача ей массива приведет к подъему. И в итоге функция вернет диапазон значений.

Использование СЕГОДНЯ() и ПОСЛЕД() для календаря

Допустим, вы используете СЕГОДНЯ() в качестве третьего аргумента функции ПОСЛЕД(). Тогда формула =ПОСЛЕД(6;7;СЕГОДНЯ()) в ячейке А4 вернет массив из 6 строк и 7 столбцов календаря, начинающегося сегодня:


Рис. 74. Использование СЕГОДНЯ() и ПОСЛЕД() для создания динамического календаря на ближайшие шесть недель

Добавьте формулу =ТЕКСТ(A4:G4; " ДДД " ) в ячейку А3 для заголовков дней недели. Обратите внимание, что эта формула разливается на 7 ячеек по горизонтали.

ТДАТА() и ПОСЛЕД() для вывода интервалов времени

Допустим вам нужно получить массив времени с интервалом 5 минут. Одна минута = 1/1440 суток. Поэтому, чтобы формула массива возвращала 5-минутные интервалы, используйте 1/288 в качестве аргумента шаг: =ПОСЛЕД(5;4;ТДАТА();1/288)


Рис. 75. 5-минутные интервалы, отсчитанные от текущего времени

Генерация последовательности букв алфавита


Рис. 76. Генерация последовательных букв с разделителем

Заметим, что ASCII коды принимают значения от 0 до 255, поэтому если ввести строчную я, и указать число букв более 1, функция вернет ошибку, т.к., после я символов ASCII нет.

Несколько наибольших значений диапазона

Если вам нужно вернуть N наибольших значений диапазона, введите требуемое число в G1. Формула в G2 вернет N наибольших чисел, автоматически расширив область результата:


Рис. 77. Возвращает N наибольших значений диапазона

Несколько наименьших значений диапазона с изменением направления вывода

Усложним задачу. Нужно вывести N наименьших значений, но расположить их не по вертикали, а по горизонтали. Первое, что напрашивается, поместить функцию НАИМЕНЬШИЙ() внутрь функции ТРАНСП(): =ТРАНСП((НАИМЕНЬШИЙ(A1:E8;ПОСЛЕД(G1)))).


Рис. 78. Вернуть N наименьших значений в горизонтальном направлении

Посмотрите еще раз на рис. 78. Формула в G2 использует ПОСЛЕД(4) для возврата вертикального массива, который затем превращается в горизонтальный с помощью ТРАНСП(). Так почему же сразу не вернуть горизонтальный массив!? Для этого используйте внутри функцию ПОСЛЕД(1;G1). Эта формула используется в ячейке G3, и она намного короче формулы в G2.

Обратите также внимание, как в ячейках G6, G7 и G11 выводится текст формул. Это делается с помощью функции Ф.ТЕКСТ(). На рис. 78 формула в G6 сама является функцией динамического массива! Функция Ф.ТЕКСТ() ожидала на вход скаляр, а получила массив G2:G3, и разлилась на две ячейки G6 и G7.

Имитация сводной таблицы диапазоном с тремя формулами

Как автор книги Сводные таблицы в Microsoft Excel, я люблю хорошую сводную таблицу. Но менеджер Microsoft проекта динамических диапазонов Джо Макдэйд и MVP Excel Роджер Говьер указали, что три формулы, вполне способны заменить сводную таблицу. При этом не будет потребности в обновлении.

Чтобы построить отчет:


Рис. 79. Замена сводной таблицы тремя формулами; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Отображение чисел в двоичном, восьмеричном или шестнадцатеричном виде

Если нужно представить десятичные числа в двоичном, восьмеричном или шестнадцатеричном виде, используйте функции ОСНОВАНИЕ() и ПОСЛЕД(). Формула в А4: =ОСНОВАНИЕ(ПОСЛЕД(B1);;). У функции ОСНОВАНИЕ() три аргумента. Первый число здесь представлен функцией ПОСЛЕД(B1), которая задает массив целых чисел от 1 до 16. Второй – основание, здесь это массив констант . Третий – мин_длина, здесь также массив констант . Работа этой формулы дает пример попарного подъема.


Рис. 80. Генерация двоичных, восьмеричных и шестнадцатеричных чисел

Суммирование длин текстовых строк большого числа ячеек

Используйте формулу =СУММ(ДЛСТР(A2:A12)). Теперь для ее ввода не требуется Ctrl+Shift+Enter.


Рис. 81. Проверка длины ваших твитов

Текст по столбцам

Эта сложная формула разработана Риком Ротстайном. Благодаря использованию функции ПОСЛЕД(), вы можете разбить текстовую строку на слова с использованием лишь одной формулы в В1.


Рис. 82. Функция ПОСЛЕД() облегчает синтаксический анализ

Суммирование всех ВПР

В старом Excel это можно было сделать только с помощью старинной функции ПРОСМОТР(). На самом деле, это была одна из двух причин, по которой пользователи Excel добирались до функции ПРОСМОТР(). С динамическими массивами вы можете использовать ВПР. Вы всё еще будете использовать старую функцию ПРОСМОТР, когда у вас вектор поиска и вектор результатов ориентированы в противоположных направлениях. Единственная формула в Е9 выполняет сначала расчет массива ВПР, а потом суммирует отдельные значения: =СУММ(ВПР(C2:C26;E1:F6;2)). Обратите внимание, что поиск ВПР ведет приблизительно – четвертый аргумент опущен.


Рис. 83. Вычисление всех ВПР и последующее их суммирование

Объединение имени и фамилии


Рис. 84. Объединение имени и фамилии и понижение регистра

Одна формула вместо таблицы данных «что если»

А в этом примере свойство трансляции (см. главу 9) используется для расчета ежемесячных платежей по автокредиту. Диапазон В4:F7 – динамический массив с единственной формулой в В4: =ПЛТ(C9/12;A4:A7;-B3:F3). Первый аргумент – процентная ставка за период. Обратите внимание, что используется простая относительная ссылка, так как не нужно протягивать формулу. Второй аргумент – общее число периодов выплаты по займу – вместо скаляра получает массив А4:А7. Третий аргумент – сумма кредита с обратным знаком – также вместо скаляра получает массив В3:F3. Благодаря трансляции Excel генерит массив из 4 строк и 5 столбцов и передает эти 20 значений в ПЛТ. Обратите внимание, условное форматирование отлично работает с динамическим массивом.


Рис. 85. Одна формула динамического массива в ячейке В4 заменяет таблицу данных

Условное форматирование на основе функции ЗНАК()


Рис. 86. Отражение динамики цен закрытия акций

Попарный подъем основан на двух массивах с одинаковым числом строк. В этом примере оба массива находятся в столбце B, но один начинается с B3 (для значения сегодняшнего дня), а другой – с B4 (для значения вчерашнего дня). На рисунке ниже показана формула в C3 в режиме редактирования, так что вы можете видеть два массива.


Рис. 87. Сравнение цен закрытия текущего и предыдущего дней

Это пример генератора анаграмм. Анаграмма – литературный прием, состоящий в перестановке букв слова или фразы, которая в результате дает другое слово или словосочетание. В оригинале автор использует английскую фразу, буквы которой переставляет случайным образом. Случай редко приводит к осмысленному результату, но позволяет получить что-то любопытное. При переводе я использовал слово из статьи Анаграммы.


Рис. 88. Генератор анаграмм с использованием динамических массивов

Использование ссылки на массив как части ссылки


Создание элементов календаря


Рис. 90. Генерация элементов календаря

Прогнозирование


Рис. 91. Прогноз на следующие 12 месяцев

Более сложное прогнозирование

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


Рис. 92. Годовой прогноз продаж

Функция ПРЕДСКАЗ.ETS ожидает скаляр, но вместо этого вы передаете ей массив из 12 значений, используя ПОСЛЕД() внутри КОНМЕСЯЦА(). Прогноз основан на фактических данных за 2007–2018 гг., расположенных в ячейках В2:B145. Формулу из E2 можно скопировать в E3:E6.

Возможно, вы спросите: почему нужно пять отдельных формул? Нельзя ли заменить ссылку на год – D2 ссылкой на массив ПОСЛЕД(5;1;2019)? Ответ – нельзя. С двумя вертикальными массивами в одной функции Excel попытается сделать попарный подъем. Но массивы имеют разный размер, поэтому вернется ошибка.

Транспонирование одного массива для предотвращения попарного подъема

Одна из стратегий предотвращения попарного подъема состоит в том, чтобы расположить годы по горизонтали. Одна формула в E3 возвращает массив 12*5:


Рис. 93. Если разместить годы по горизонтали, формула работает

Прогнозирование всех пяти лет в одной формуле

Если вы передадите ПРЕДСКАЗ.ETS в функцию СУММ, то получите суммарный прогноз продаж на 60 месяцев:


Рис. 94. Одна формула возвращает 5-летний прогноз

Данные в строке (столбце) разместить в диапазоне


Рис. 95. Данные из строки в массив из трех столбцов

Использование динамических массивов для зависимой проверки

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

Читайте также: