Google Sheets с использованием дня недели в массиве - PullRequest
1 голос
/ 24 февраля 2020

У меня есть эта формула, которая прекрасно работает, если поместить ее в отдельные ячейки столбца:

 =OR(AND(AND(D2:D, WEEKDAY(NOW()) = 1),D2:D <>""),
    AND(AND(E2:E, WEEKDAY(NOW()) = 2),E2:E <>""),
    AND(AND(F2:F, WEEKDAY(NOW()) = 2),F2:F <>""),
    AND(AND(G2:G, WEEKDAY(NOW()) = 2),G2:G <>""),
    AND(AND(H2:H, WEEKDAY(NOW()) = 2),H2:H <>""),
    AND(AND(I2:I, WEEKDAY(NOW()) = 2),I2:I <>""),
    AND(AND(J2:J, WEEKDAY(NOW()) = 2),J2:J <>"")
   )

Однако я не могу заставить ее работать в формуле массива:

 =ARRAYFORMULA(IF(LEN(A2:A),
  OR(AND(AND(D2:D, WEEKDAY(NOW()) = 1),D2:D <>""),
    AND(AND(E2:E, WEEKDAY(NOW()) = 2),E2:E <>""),
    AND(AND(F2:F, WEEKDAY(NOW()) = 2),F2:F <>""),
    AND(AND(G2:G, WEEKDAY(NOW()) = 2),G2:G <>""),
    AND(AND(H2:H, WEEKDAY(NOW()) = 2),H2:H <>""),
    AND(AND(I2:I, WEEKDAY(NOW()) = 2),I2:I <>""),
    AND(AND(J2:J, WEEKDAY(NOW()) = 2),J2:J <>"")
   ),""))

Вот общий лист, так что вы можете скопировать его: https://docs.google.com/spreadsheets/d/1TR-ayKtfOFC2LtQoIm8kzt7keTsyrqgxP0ZY9JVDcOs/edit?usp=sharing

[ОБНОВЛЕНИЕ:] В моей исходной формуле произошла другая ошибка. PlayerO решил проблему И ИЛИ, но перенес мою ошибку. Вот исправленный код, который работал для моей ситуации:

={"VaildDay";ARRAYFORMULA(IF(LEN(A2:A),
 ((((E2:E)*(WEEKDAY(NOW())=1))*(E2:E<>""))+
  (((F2:F)*(WEEKDAY(NOW())=2))*(F2:F<>""))+
  (((G2:G)*(WEEKDAY(NOW())=3))*(G2:G<>""))+
  (((H2:H)*(WEEKDAY(NOW())=4))*(H2:H<>""))+
  (((I2:I)*(WEEKDAY(NOW())=5))*(I2:I<>""))+
  (((J2:J)*(WEEKDAY(NOW())=6))*(J2:J<>""))+
  (((K2:K)*(WEEKDAY(NOW())=7))*(K2:K<>"")) = 1, ))

1 Ответ

2 голосов
/ 24 февраля 2020

изменение AND для * и OR для +:

=ARRAYFORMULA(IF(LEN(A2:A),
 ((((D2:D)*(WEEKDAY(NOW())=1))*(D2:D<>""))+
  (((E2:E)*(WEEKDAY(NOW())=2))*(E2:E<>""))+
  (((F2:F)*(WEEKDAY(NOW())=2))*(F2:F<>""))+
  (((G2:G)*(WEEKDAY(NOW())=2))*(G2:G<>""))+
  (((H2:H)*(WEEKDAY(NOW())=2))*(H2:H<>""))+
  (((I2:I)*(WEEKDAY(NOW())=2))*(I2:I<>""))+
  (((J2:J)*(WEEKDAY(NOW())=2))*(J2:J<>"")))=1, ))

0

...