Нет, извините, в общем случае это невозможно для любой формулы, а также для ее автоматического обновления. Без использования VBA, то есть.
Однако это можно сделать для очень небольшого числа конкретных формул (например, конкатенация константной строки). Это также может быть сделано, но с ручным обновлением, для определенного набора формул, как хитро показано в ответе VFor.
Самое близкое к общему решению вы можете переставить ячейки, встроить формулу DOSOMETHING
в специальную формулу-обертку и использовать вспомогательные столбцы.
Для вашего предоставленного примера листа:
Переставь это так:
Введите следующую формулу в D2
и ctrl-enter/copy-paste/fill-down & right/auto-fill в остальные столбцы таблицы:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Введите следующую формулу в B2
и ctrl-enter/copy-paste/fill-down/auto-fill в оставшуюся часть столбца таблицы:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Обратите внимание, что количество требуемых вспомогательных столбцов является максимально допустимым значением n плюс один. Если их недостаточно для введенного значения, возникает ошибка:
Объяснение:
Обобщенная формула оболочки для вспомогательных столбцов:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
где DOSOMETHING(C2)
- любая формула, основанная только на C2
(например, LEFT(C2,LEN(C2)-1)
которая постепенно удаляет последний символ).
Формула-обертка работает, воздействуя на ячейку слева, таким образом, эффективно "вкладывая" формулы дальше вправо в строке, в которой они находятся.
Часть IF(COLUMN()-COLUMN($C2)>$A2,"§",
использует индексы столбцов для обратного отсчета числа раз, когда формула DOSOMETHING
вкладывается, и как только число раз, указанное в столбце A
Достигнуто это выводит строки терминатора. Эти строки не обязательно должны быть §
. Они просто должны быть чем-то, что никогда не будет результатом оценки любого числа вложенных формул для любого допустимого Value
.
Формула Result
выглядит сложнее. Однако части C2:INDEX(2:2, 1, COLUMNS(2:2))
являются просто поддиапазоном строки 2
справа от столбца Result
.
Таким образом, формула по существу такая же, как:
=INDEX(2:2,MATCH("§",2:2,0)-1)
что облегчает понимание.
(Обратите внимание, что эта формула действительно работает, если включены итеративные вычисления.)
Глядя на эту более простую формулу, становится ясно, что формула возвращает результат вложенной функции DOSOMETHING
n-уровня.