Вопрос:
В настоящее время я использую эту формулу массива.
{=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))}
который также является скалярным возвратом.