В этой статье описан метод объединения нескольких промежуточных формул для создания одной длинной формулы (мегаформулы). Если вы уже поработали в Excel определенное время, то могли видеть длинные формулы, которые были практически непонятны. Здесь вы узнаете, как они были созданы.
Поставим цель создать одну формулу, которая удаляет отчество (например, Иван Павлович Петров становится Иваном Петровым). На рис. 125.1 показан лист с некоторыми именами и шесть столбцов промежуточных формул, которые выполняют задачу. Обратите внимание, что формулы несовершенны: они не могут обрабатывать имя из одного слова.
Формулы, введенные в строке 2, приведены в таблице ниже.
Ячейка | Промежуточная формула | Действие |
---|---|---|
B2 | =СЖПРОБЕЛЫ(A2) |
Удаляет избыточные пробелы |
C2 | =НАЙТИ(" ";A2;1) |
Находит первый пробел |
D2 | =НАЙТИ(" ";B2;C2+1) |
Находит второй пробел, если он есть |
E2 | =ЕСЛИОШИБКА(D2;C2) |
Использует первый пробел, если нет второго |
F2 | =ЛЕВСИМВ(B2;C2) |
Извлекает имя |
G2 | =ПРАВСИМВ(B2;ДЛСТР(B2)-E2) |
Извлекает фамилию |
H2 | =F2&G2 |
Объединяет имя и фамилию |
Затратив немного времени, вы можете исключить все промежуточные формулы и заменить их одной мегаформулой. Это можно сделать путем создания всех промежуточных формул и последующего редактирования окончательной формулы (в данном случае формулы в столбце Н) с заменой каждой ссылки на ячейку копией формулы в этой ячейке. К счастью, вы можете использовать буфер обмена для копирования и вставки формул, а не вводить их заново. Продолжайте этот процесс, пока ячейка H1 не станет содержать ничего, кроме ссылки на ячейку А1. В конечном итоге у вас получится следующая мегаформула в одной ячейке:
=ЛЕВСИМВ(СЖПРОБЕЛЫ(A2);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1))&ПРАВСИМВ(СЖПРОБЕЛЫ(A2);ДЛСТР(СЖПРОБЕЛЫ(A2))-ЕСЛИОШИБКА(НАЙТИ(" ";СЖПРОБЕЛЫ(A2);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1)+1);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1)))
Когда вы будете удовлетворены тем, как работает мегаформула, вы можете удалить столбцы, содержащие промежуточные формулы, потому что они больше не используются.
Если вам все еще не ясен описанный процесс, выполните его пошагово.
=F2&G2
=F2&ПРАВСИМВ(B2; ДЛСТР(B2)-E2)
=ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-E2)
=ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-ЕСЛИОШИБКА(D2;C2))
=ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-ПРАВСИМВ(НАЙТИ(" ";B2;B2+1);C2))
В формуле есть три ссылки на ячейку С2.
=ЛЕВСИМВ(B2;НАЙТИ(" ";B2;1))&ПРАВСИМВ(B2;ДЛСТР(B2)-ЕСЛИОШИБКА(НАЙТИ(" ";B2;НАЙТИ(" ";B2;1);НАЙТИ(" ";B2;1)))
=ЛЕВСИМВ(СЖПРОБЕЛЫ(A2);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1))&ПРАВСИМВ(СЖПРОБЕЛЫ(A2);ДЛСТР(СЖПРОБЕЛЫ(A2))-ЕСЛИОШИБКА(НАЙТИ(" ";СЖПРОБЕЛЫ(A2);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1)+1);НАЙТИ(" ";СЖПРОБЕЛЫ(A2);1)))
Обратите внимание, что формула в ячейке Н2 теперь содержит ссылки только на ячейку А2. Мегаформула завершена и выполняет те же самые задачи, что и промежуточные формулы (которые теперь можно удалить). Вы можете, конечно, адаптировать этот метод для собственных нужд. Приятной особенностью является то, что одна мегаформула часто рассчитывается быстрее, чем несколько промежуточных формул.
При замене ссылок на ячейки текстом формулы убедитесь, что формула продолжает отображать правильный результат после каждой замены. В некоторых ситуациях вам, возможно, понадобится поставить вокруг скопированной формулы круглые скобки.