Формула массива с ifs, isblank и AND/OR в листах Google

То, что я пытаюсь достичь, - это формула, которая проверяет верхнюю строку на «все пустые» или «все не пустые» в указанных диапазонах. В зависимости от условий ячейка с формулой возвращает 1 из 3 слов или оставляет ее пустой.

Я также иллюстрирую это цветами на следующих изображениях.

передача

отправить

получить

Формула, которая у меня есть до сих пор:

=ArrayFormula(ifs((not(isblank(A1:B1*C1:E1*G1:I1))*(isblank(J1:L1*N1:P1))),"SEND", not(isblank(A1:B1*J1:L1*N1:P1))*isblank(C1:E1*G1:I1),"RECEIVE", not(isblank(A1:B1*C1:E1*G1:I1*J1:L1*N1:P1)),"TRANSFER", ISBLANK(A1:B1+C1:E1+G1:I1+J1:L1+N1:P1),""))

Я не понимаю, что не так с формулой. Как, например, в случае, когда J1:L1*N1:P1 заполнено, isblank(J1:L1*N1:P1) возвращает false, когда я хочу, чтобы это было true.


person sallux    schedule 12.02.2018    source источник
comment
Ну, в чем проблема с тем, что у вас есть до сих пор?   -  person ttarchala    schedule 12.02.2018
comment
Прямо сейчас он возвращает TRANSFER независимо от того, что находится в строке. так как я хочу это следующим образом; диапазоны заполнены = ПЕРЕДАЧА, любой диапазон J: P не заполнен = ОТПРАВИТЬ, любой диапазон C: I не заполнен = ПОЛУЧИТЬ, любой из вышеперечисленных FALSE = пустая ячейка   -  person sallux    schedule 13.02.2018


Ответы (2)


Вот отдельные операторы IF:

=IF((COUNTIF(A1:E1,"?*")=5)*(COUNTIF(G1:L1,"?*")=6)*(COUNTIF(N1:P1,"?*")=3)=TRUE,"TRANSFER","")

=IF((COUNTIF(A1:E1,"<>")=5)*(COUNTIF(G1:I1,"<>")=3)*(COUNTIF(J1:L1,"")=3)*COUNTIF(N1:P1,"")=3,"SEND","")

=IF((COUNTIF(C1:E1,"")=3)*(COUNTIF(G1:I1,"")=3)*(COUNTIF(J1:L1,"<>")=3)*COUNTIF(N1:P1,"<>")=3,"RECEIVE","")

Вот вложенные операторы IF.

=IF((COUNTIF(A1:E1,"?*")=5)*(COUNTIF(G1:L1,"?*")=6)*(COUNTIF(N1:P1,"?*")=3)=TRUE,"TRANSFER",IF((COUNTIF(A1:E1,"<>")=5)*(COUNTIF(G1:I1,"<>")=3)*(COUNTIF(J1:L1,"")=3)*COUNTIF(N1:P1,"")=3,"SEND",IF((COUNTIF(C1:E1,"")=3)*(COUNTIF(G1:I1,"")=3)*(COUNTIF(J1:L1,"<>")=3)*COUNTIF(N1:P1,"<>")=3,"RECEIVE","")))
person N.O.Davis    schedule 13.02.2018
comment
Благодарю вас! это определенно помогло мне направить в правильном направлении. Было несколько небольших ошибок, связанных с моими конкретными требованиями, но ваши утверждения верны. Поэтому я скорректировал ваши утверждения по своему вкусу - person sallux; 14.02.2018
comment
Рад, что вы смогли изменить его в соответствии с вашими потребностями. Всего две заметки. ISODD может не понадобиться. Кроме того, если у вас есть функции в ячейке, которые отображают значения, ‹› не поймает их. Вот где ?* поможет. - person N.O.Davis; 15.02.2018

Итак, с помощью Нейта я придумал следующую формулу:

=IFS(ISODD((COUNTBLANK(A1:E1)=0)*(COUNTBLANK(G1:L1)=0)*(COUNTBLANK(N1:P1)=0)),"TRANSFER", (ISODD((COUNTIF(A1:E1,"<>")=5)*(COUNTIF(G1:I1,"<>")=3)*(COUNTIF(J1:L1,"")=3)*COUNTIF(N1:P1,"")=3)),"SEND",ISODD((COUNTIF(C1:E1,"")=3)*(COUNTIF(G1:I1,"")=3)*(COUNTIF(J1:L1,"<>")=3)*(COUNTIF(N1:P1,"<>")=3)),"RECEIVE",true,"")

person sallux    schedule 13.02.2018