【问题标题】:More Efficient Way to Avoid Multiple Calculations #3?避免多次计算的更有效方法#3?
【发布时间】:2019-09-19 07:01:13
【问题描述】:

寻找一种更有效的方法,可能是最小值/最大值的数组公式。不确定数组公式是否适用于这个函数,因为我无法使用它。

=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 会导致计算时间变慢。

【问题讨论】:

  • 通过一些示例分享您的工作表副本
  • 在 sheet1 中从 M42 开始向下复制的公式正在寻找 Data!E13 和 Data!E72 之间的最大值。该值恰好是 2,998.99。 K 列的数字有时会发生变化,因此出于这个原因,我仍然需要为行号提供公式参考列 K。谢谢!如果您需要更多信息,请告诉我?

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


【解决方案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"))

【讨论】:

  • 这太不可思议了。在实际工作表中收到错误消息“无法解析函数 QUERY 参数 2: NO_COLUMN: Col212 的查询字符串”
  • 好吧,不能说您的实际工作表中出了什么问题。我需要调试它。仔细检查范围参考。还要确保你至少有 ~ 500 行
  • 决定分享我在 2019 年 4 月 6 日保存的整个项目的副本。单元格 M42 是我们试图更改为数组公式的内容。实际上试图使工作表中的所有内容都变得更好。我认为缺乏使用数组公式是导致我计算时间的常见错误。 docs.google.com/spreadsheets/d/…
  • 我需要将第 42 行中的所有公式更改为数组。其中一些行在底行有不同的公式,只是为了用正确的数据开始列。
  • 多么奇怪。我不应该有任何不同的活动工作表显示错误,而共享副本则没有。我会将其标记为答案,只需要尝试看看两张纸之间有什么不同。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多