【问题标题】:Is it possible to combine an Arrayformula, with a Transpose and a Sequence?是否可以将 Arrayformula、Transpose 和 Sequence 结合起来?
【发布时间】:2019-12-15 15:10:51
【问题描述】:

有人可以帮我吗?

我的目标是在每行的开始日期和结束日期之间(包括)生成转置的日期数组。

我的源数据有两列,开始日期和结束日期,如下所示:

我使用sequence+transpose (transpose(sequence(B1-A1+1,1,A1+1))) 将它用于单个列。这给了

结果。我也尝试过使用different method 生成日期,但这也给出了单行,不能扩展为数组。

将任一公式包装在数组公式中都不起作用。我是在做错什么,还是根本无法使用一系列开始和结束日期来解决这个问题?

作为参考,这是我使用数组公式编写公式的方式:

  • 使用顺序:

    arrayformula(transpose(sequence(B1:B2-A1:A2+1,1,A1:A2+1)))
    
  • 使用 date_dif:

    arrayformula(transpose(arrayFormula(to_date(row(indirect("A"&A1:A2):indirect("A"&B1:B2))))))

有人知道这是否可能吗?

【问题讨论】:

  • 只是格式问题吧?你能分享你想要的输入和输出的演示表吗? (打开分享:))
  • @Datanovice 看起来他的问题是:Sequence 不适用于ArrayFormula,因为Sequence 已经有它自己独特的数组行为。
  • @datanovice 已添加!
  • @YannickNierop 看起来你的 date_dif 函数不能正常工作 arrayformula ......如何先制作一个没有数组的工作?
  • @CodeCamper 我已将 date_dif 添加到演示文件中,它应该适用于单行。

标签: arrays google-sheets sequence google-sheets-formula array-formulas


【解决方案1】:

这将是我的努力,但@player0 一如既往地第一个到达:

=ArrayFormula(if(A2:A="","",if(column(C2:Z)-column(C2:C)>B2:B-A2:A,"",A2:A+column(C2:Z)-column(C2:C))))

【讨论】:

    【解决方案2】:

    尝试:

    =ARRAYFORMULA(TO_DATE(IFERROR(IF(
     REGEXREPLACE(TO_TEXT(IFNA(REGEXEXTRACT(REPT(1, DAYS(B3:B, A3:A)), 
     REPT("(.)", DAYS(B3:B, A3:A)))*
     TRANSPOSE(ROW(INDIRECT("A1:A"&MAX(IFERROR(DAYS(B3:B, A3:A))))))-1)), "^-1$", )="",,
     REGEXREPLACE(TO_TEXT(IFNA(REGEXEXTRACT(REPT(1, DAYS(B3:B, A3:A)), 
     REPT("(.)", DAYS(B3:B, A3:A)))*
     TRANSPOSE(ROW(INDIRECT("A1:A"&MAX(IFERROR(DAYS(B3:B, A3:A))))))-1)), "^-1$", )+A3:A))))
    


    spreadsheet demo

    【讨论】:

    • 谢谢!我已将此标记为答案,因为这是唯一不使用额外列引用的答案(因为之间的日期数量很可能超过 Z,这会带来额外的问题)。
    • 顺便说一句,这也可以:=ARRAYFORMULA(IF(B3:B="",,IFERROR(IF(COLUMN(A:ZZZ)-1>DAYS(B3:B, A3:A),,A3:A+COLUMN(A:ZZZ)-1)))) 如果日期差小于 18279 天
    • @player0 我不明白,如果日期差大于 18279 天,你不会用完列来以他想要的方式显示它吗?另外我不明白为什么您的简短答案不是最佳答案?
    【解决方案3】:

    或:

    =ARRAYFORMULA(IF(B3:B="",,IFERROR(IF(COLUMN(A:Z)-1>DAYS(B3:B, A3:A),,A3:A+COLUMN(A:Z)-1))))
    

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多