【问题标题】:Manual Formula to Arrayformula Google SheetsArrayformula Google 表格的手动公式
【发布时间】:2020-12-23 15:19:33
【问题描述】:

我一直在将这些公式拖到 Google 工作表的末尾,这使得工作表变得更重,并且在加载/执行操作时干扰很多。

我正在尝试将这些公式转换为数组。

我们将不胜感激。

表格链接 https://docs.google.com/spreadsheets/d/1pgVGJxkw39uelgPU9ceZLXflnP8KaFGou4rJfSsfVXc/edit#gid=0

=IF(AND(E3<>"",B3<>""),EDATE(E3,6),"")

=IF(F3="Confirmed","13",IF(F3="Probation","0",IF(F3="Terminate","",IF(F3="",""))))

=IF(F2="Confirmed",IFERROR(IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=1,12,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=2,11,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=3,10,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=4,9,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=5,8,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=6,7,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=7,6,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=8,5,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=9,4,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=10,3,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=11,2,IF(MONTH(DATEVALUE(TEXT(G2,"mmm")&" 1"))=12,1))))))))))))*13/12),IF(F2="Probation","0",""))

=IF(F2<>"",K2+IF(I2=0,H2-L2,I2-L2),"")

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    以下四个公式应该适合你。

    公式#1

    =ArrayFormula(IF((E3:E<>"")*(B3:B<>""),EDATE(E3:E,6),""))
    

    公式 #2

    =ArrayFormula(IFS(F3:F="Confirmed","13",F3:F="Probation",0,F3:F="Terminate","",F3:F="",""))
    

    公式#3

    =ArrayFormula(IF(F3:F="Confirmed",
      IFERROR(IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=1,12,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=2,11,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=3,10,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=4,9,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=5,8,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=6,7,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=7,6,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=8,5,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=9,4,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=10,3,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=11,2,
              IF(MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))=12,1))))))))))))*13/12),
      IF(F3:F="Probation",0,"")))
    

    公式#4

    =ArrayFormula(IF(F3:F<>"",O3:O+IF(K3:K=0,I3:I-P3:P,K3:K-P3:P),""))
    

    更新: 试试下面的公式来计算分配休假的月份,替换上面的第三个公式:

    =ArrayFormula(IF(LEN(G3:G),
                    (13 - MONTH(DATEVALUE(TEXT(G3:G,"mmm")&" 1"))) * 13/12,
                    ""))
    

    更新#2 更正了上面的公式,添加了两个我已经省略的条件检查。

    =ArrayFormula(IF(LEN(G4:G),
       IF(F4:F="Confirmed",
         (13 - MONTH(DATEVALUE(TEXT(G4:G,"mmm")&" 1"))) * 13/12,
         IF(F4:F="Probation",0,0)),""))
    

    请注意,最后一个 IF 测试可能会被取消,并简单地替换为“0”,但也许您希望它在那里以供将来参考。我还在所有公式中将“0”更改为数字 0。

    【讨论】:

    • kirkg13,先生,非常感谢您,还有另外三个请在表格中查看这些,先生,如果您能做到这一点,我将非常感激。表格中还有三个,如果可能的话,请改进它们。
    • 先生@kirkg13,谢谢,但如果您看到附件Col“I”,其中Col“G”和“F”开始为空,公式显示“False”,就会出现问题。如果可以,请检查一下。它应该是空的。谢谢
    【解决方案2】:

    试用期间休假,不包括“C”值:

    =ArrayFormula(IFERROR(1/(1/(IF(B3:B="",,LEN(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(
     IFERROR(VLOOKUP(ROW(Jan!A3:A), {ROW(Jan!A3:A), Jan!C3:AG, Feb!C3:AE, Mar!C3:AG, Apr!C3:AF, May!C3:AG, Jun!C3:AF, Jul!C3:AG, Aug!C3:AG, Sep!C3:AF, Oct!C3:AG, Nov!C3:AF, Dec!C3:AG}, 
     IF(1=SPLIT(REPT("01", DATE(YEAR(E3:E), MONTH(E3:E)+6, DAY(E3:E))-("01/01/2020"-1)), 0), COLUMN(B:AAA), )*1, 0))<>"C", 
     IFERROR(VLOOKUP(ROW(Jan!A3:A), {ROW(Jan!A3:A), Jan!C3:AG, Feb!C3:AE, Mar!C3:AG, Apr!C3:AF, May!C3:AG, Jun!C3:AF, Jul!C3:AG, Aug!C3:AG, Sep!C3:AF, Oct!C3:AG, Nov!C3:AF, Dec!C3:AG}, 
     IF(1=SPLIT(REPT("01", DATE(YEAR(E3:E), MONTH(E3:E)+6, DAY(E3:E))-("01/01/2020"-1)), 0), COLUMN(B:AAA), )*1, 0)), )),,9^9))), " ", )))))))
    

    补偿叶:

    =ArrayFormula(IFERROR(1/(1/(IF(B3:B="",,LEN(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(
     {Jan!C3:AG, Feb!C3:AG, Mar!C3:AG, Apr!C3:AG, May!C3:AG, Jun!C3:AG, Jul!C3:AG, Aug!C3:AG, Sep!C3:AG, Oct!C3:AG, Nov!C3:AG, Dec!C3:AG}="C", 
     {Jan!C3:AG, Feb!C3:AG, Mar!C3:AG, Apr!C3:AG, May!C3:AG, Jun!C3:AG, Jul!C3:AG, Aug!C3:AG, Sep!C3:AG, Oct!C3:AG, Nov!C3:AG, Dec!C3:AG}, )),,9^9))), " ", )))))))
    

    无论试用期,今年总休假

    =ArrayFormula(IFERROR(1/(1/(IF(B3:B="",,LEN(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE( 
     {Jan!C3:AG, Feb!C3:AG, Mar!C3:AG, Apr!C3:AG, May!C3:AG, Jun!C3:AG, Jul!C3:AG, Aug!C3:AG, Sep!C3:AG, Oct!C3:AG, Nov!C3:AG, Dec!C3:AG}),,9^9))), " ", )))))))
    

    【讨论】:

    • 感谢您提供的帮助。 @player0,我知道你做对了,但是如何从 Col"L" 中减去 Col"J" 和 Col"K" 因为在减去 Col"J" 和 Col"K" 然后 Col"L" 得到准确的结果。跨度>
    • 如果结果为空,我想提“0”,直到 Col“E”使用范围之后它将为空
    • 先生,在上面的表格中突出显示的“K9”应该是 .0,因为他在 9 月到 12 月期间没有请假并且他的假期 1 已更新?我认为公式是根据月份而不是确切的年份来计算的。这就产生了一个问题。
    • 我应该发布新问题@player0
    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2022-11-24
    • 2019-08-06
    • 2021-03-16
    相关资源
    最近更新 更多