2015-02-18 4 views
2

Я столкнулся с этой ситуацией много, много раз и не нашел никакого ответа (в том числе здесь, на SO).Использование результата формулы Excel, оцененного в выражении If без пересчета

У меня был бы оператор «IF» в Excel, где оцениваемое условие включало бы очень длинную формулу. Чтобы улучшить скорость пересчета, я бы хотел проверить результат и, если он соответствует критериям, использовать уже рассчитанный результат вместо того, чтобы Excel вычислил его снова. Другими словами, используйте 1-ый подход & а не 2-ой, как показано ниже:

1) =if([long formula] = criteria, [use result of long formula], [calc something else]) 

против

1) =if([long formula] = criteria, [calc long formula again], [calc something else]) 

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

Кто-нибудь знает, есть ли какой-нибудь метод для этого?

+1

Возможно, что-то из того, что вы просите, но несоблюдение условия (* False *) должно быть ошибкой. См. Интерактивную справочную страницу для новой (er) функции [IFERROR] (https://support.office.microsoft.com/en-us/article/IFERROR-function-f59bacdc-78bd-4924-91df-a869d0b08cd5) и даже более новая функция [IFNA] (https://support.office.microsoft.com/en-us/article/IFNA-function-6626c961-a569-42fc-a49d-79b4951fd461). – Jeeped

ответ

1

Введите длинную формулу в другую ячейку и затем назовите эту ячейку. (Define and use names)

Затем укажите название этой ячейки вместо длинной формулы. В приведенном ниже примере я кладу формулу в A1 и назвал его «Фред», то в А2 я использую формулу =IF(Fred>8,Yes,Fred) и возвращает формулу:

Screen

Если вы не хотите, чтобы ввести его в другая ячейка, перейдите на вкладку формулы и нажмите кнопку «Определить имя», и вы можете ввести имя для справки и формулу ниже, как константа:

enter image description here

похоже, что это пытается присвоить относительные ссылки ячеек, однако поэтому я был бы уверен, ces в формуле (определяется $).

+0

Отлично! Я даже не думал об определении именованного диапазона с формулой (и относительные ссылки на самом деле были тем, что я хотел в любом случае). –

+0

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

+0

@CharlesWilliams - Итак, если оператор IF имеет форму «= IF (Fred> 8, Yes, Fred)», «Fred» вычисляется дважды? Это отчасти поражает цель того, что я пытался сделать, то есть избегать вычисления длинной формулы более одного раза. –

Смежные вопросы