Формула массива в excel внезапно не работает… устранение неполадок

Вопрос: В настоящее время я использую эту формулу массива. {=LARGE(IF(('Data Input'!$L$3:$L$15000=$B10)*('Data Input'!$H$3:$H$15000>$C10),'Data Input'!$O$3:$O$15000,0),1)} Где B10 - это текстовый идентификатор, например 658A и L: L - столбец с идентификаторами. C10 - дата, где H: H - столбец с датами. O: O - столбец со значением #, которое я извлекаю. Эта формула отлично работает с моими целями

Вопрос:

В настоящее время я использую эту формулу массива.

{=LARGE(IF((‘Data Input’!$L$3:$L$15000=$B10)*(‘Data Input’!$H$3:$H$15000>$C10),’Data Input’!$O$3:$O$15000,0),1)}

Где B10 – это текстовый идентификатор, например 658A и L: L – столбец с идентификаторами. C10 – дата, где H: H – столбец с датами. O: O – столбец со значением #, которое я извлекаю.

Эта формула отлично работает с моими целями при использовании с ctrl, shift, enter

Проблема возникает, когда я пытаюсь использовать…

{=IF(‘Data Input’!$L$3:$L$15000=$B10,1,0)}

Он всегда возвращает результат FALSE, даже если он работает правильно в первой формуле.

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

Лучший ответ:

IF использует только первое значение возвращаемого массива, поэтому, только если первое сравнение истинно, оно вернет истинное значение.

Пример для иллюстрации:

Формула: {=IF(A1:A3=B2,1,0)}; return 0, если ячейка A1 не изменилась на true. Чтобы изменить результат, чтобы он возвращал true, если какое-либо из значений истинно, вам нужно прибегнуть к небольшому обману…

Сначала используйте — чтобы изменить значения True/False на 1/0, затем используйте SUM для их объединения. поскольку IF обрабатывает любой ненулевой результат как истинный, это приведет к тому, что 1 будет возвращено, когда любое сравнение будет истинным.

Используя наш пример с новой формулой {=IF(SUM(—(A1:A3=B2)),1,0)} (еще формула массива), мы получаем следующие шаги в оценке:

=IF(SUM(—(A1:A3=B2)),1,0) =IF(SUM(—(A1:A3=2)),1,0) =IF(SUM(—({1,2,2}=2)),1,0) =IF(SUM(—({False,True,True})),1,0) =IF(SUM(0,1,1),1,0) =IF(2,1,0) =1 Ответ №1

Ваша вторая формула сама возвращает массив. Вы просматриваете только верхний левый элемент в этом возвращаемом массиве – это происходит как ЛОЖЬ.

Ваша первая формула возвращает скалярное значение; это разница.

Если вы хотите суммировать значения “1”, тогда ваша вторая формула может быть изменена до

{=SUM(IF(‘Data Input’!$L$3:$L$15000=$B10,1,0))}

который также является скалярным возвратом.

Оцените статью
Добавить комментарий