ArrayFormula работает только в первой строке с косвенным ()

Цель состоит в том, чтобы применить вычисления (Y4:Y-(W4:W*V4:V))+S4:S-T4:T) к ячейкам столбца и оставить 0 где V ячейка в уважаемой строке blank или 0 . Примечание. Само вычисление не имеет значения.

Когда столбец V первой строки равен 0 или blank , приведенная ниже формула просто применяет 0 к первой затронутой строке, но остальная часть столбца остается пустой.

Однако, если условие, которое проверяет V ячейку, возвращает FALSE для первой строки (это означает, что ячейка V в уважаемой строке имеет ненулевое значение), весь столбец получает соответствующий результат вычисления, применяемый в каждой строке.

=ARRAYFORMULA(
    IF(
        OR(
            ISBLANK(INDIRECT("V" & ROW())),
            EQ(INDIRECT("V" & ROW()), 0)
        ),
        0,
        (Y4:Y-(W4:W*V4:V))+S4:S-T4:T
    )
)

Как изменить формулу так, чтобы остальная часть столбца заполнилась, даже когда условие первой строки оценивает V ячейку как 0 или blank ?

Всего 1 ответ


Есть две проблемы с вашей формулой:

  1. Вы не можете использовать агрегированную функцию типа OR внутри arrayformula . Это описано здесь https://productforums.google.com/forum/#!topic/docs/dl_9H6hFwaE .

  2. Тестирование на 0 или blank может быть выполнено с помощью одного логического выражения, такого как C1=0 или EQ(C1,0) , оба из которых вернут true, если C1 либо 0, либо пустое. (Обратите внимание, что это затрудняет проверку, содержит ли ячейка 0, но не содержит пробела). См. Здесь https://support.microsoft.com/en-au/help/214244/xl-how-to-create-a-formula-to-correctly-evaluate-blank-cells

Я не знаю, почему вы используете INDIRECT, но эта формула должна работать по мере необходимости:

=ARRAYFORMULA(if( eq(V4:V,0),0, (Y4:Y-(W4:W*V4:V))+S4:S-T4:T))

Мы удалили логический ИЛИ (который убивает формулу).

Мы удалили избыточный тест для пустого и 0;


Есть идеи?

10000