Есть метод отладки формул, который работает в гугл-таблицах, эксель, да и везде где только можно – луковичная модель отладки формул. В этой модели вы берете сложную-сложную вложенную формулу, и как с луковицы, снимете с нее функции слой за слоем. Этот же метод отлично подходит для понимания, как работает сложная формула.
Посмотрим на примере!
Я подготовил таблицу, в которой формула в ячейке A3 переворачивает заданную в ячейке A1 строку: https://docs.google.com/spreadsheets/d/12zkIoCyWtW2IfcY7F6w7xDLWXpb1SFQ9lUYzlXnhQh8/edit?usp=sharing
Вот сама формула:
=join("";arrayformula(mid(A1;len(A1)-sequence(len(A1);1;0;1);1)))
Давайте развернем ее слой за слоем:
- JOIN - объединяет массив, заданный 2-м аргументом в одну строку с разделителем, заданным в 1-м аргументе.
- ARRAYFORMULA - применяется к вложенной формуле, чтобы она была посчитана, как формула массива в соответствии с массивами, переданными в аргументах
- MID - извлекает часть строки
- LEN - указывает длину строки
- SEQUENCE - создает массив строк или столбцов с последовательностью чисел с заданным шагом.
- LEN - указывает длину строки
Стало понятнее? Наверное, нет. Давайте теперь соберем формулу в обратном порядке:
=sequence(len(A1);1;0;1)
Получаем последовательность чисел от 0 до длины слова в ячейке A1 - 1
=len(A1)-sequence(len(A1);1;0;1)
Получаем последовательность в обратном порядке (
Для самостоятельной работы:
мы могли бы сделать формулу чуть проще, убрать шаг с вычитанием, воспользовавшись отрицательным шагом в формуле SEQUENCE. Напишите в комментариях упрощенную формулу.
=arrayformula(mid(A1;len(A1)-sequence(len(A1);1;0;1);1)
Для каждого элемента массива на прошлом шаге, мы извлекаем один символ на соответствующей позиции из строки в A1
=join("";arrayformula(mid(A1;len(A1)-sequence(len(A1);1;0;1);1)))
Наконец, мы объединяем весь массив обратно в строку.
Для наглядности можно эти шаги формулы вписать в отдельные столбцы, рядом с нашей формулой: