避免多次计算的更有效方法#3?

时间:2019-09-18 16:41:27

标签: google-sheets transpose google-sheets-formula array-formulas google-sheets-query

寻找一种更有效的方法,可能在下一个列中使用“最小/最大”的数组公式。不确定数组公式是否可以与此函数一起使用,因为我无法理解它。

=ArrayFormula(MAX(INDIRECT("Data!E"&(K42:K169)&":E"&(K43:K170-1))))

=ARRAYFORMULA(MAX(VLOOKUP(K42:K169, {ROW(Data!A:A), Data!E:E}, 2, 0)&VLOOKUP(K43:K170-1, {ROW(Data!A:A), Data!E:E}, 2, 0)))

请注意,我使用的是ROW(Data!A:A)而不是简单的ROW(A:A),因为当前工作表中的范围不适合工作表Data !!

这是我当前的代码,复制到工作表的列中。

=MAX(INDIRECT("Data!E"&(K42-1)&":E"&(K43-1)))

只需要一种更有效的方法。我是否正确,使用INDIRECT会导致计算时间变慢。

1 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(
 INDIRECT("Data!E"&K42&":E"&MAX(K42:K))&","&IF(MOD(ROW(
 INDIRECT("Data!A1:A"&COUNTA(L42:L)*K41)), K41)=0, "♦", ),,999^99), "♦")), ","), 
 "where Col2 is not null", 0)),
 "select "&TEXTJOIN(",", 1, IF(LEN(L42:L),
 "max(Col"&ROW(A42:A)-ROW(A42)+1&")", ))&"")),
 "select Col2"))

0