【问题标题】:Indexing questions with array formulas in Excel在 Excel 中使用数组公式索引问题
【发布时间】:2017-02-11 01:02:38
【问题描述】:

我是 Excel 中的数组公式的新手,我的大脑已经在 R 中训练了太久,所以如果这个问题简单或太具体,我很抱歉。我的数据如下所示:

ID  Iteration   Value   Group1  Group2
2   1           100     0       0
2   2           85      1       0
2   3           28      0       0
3   1           94      1       0
5   1           83      0       1
5   2           50      1       1
6   1           94      0       0
6   2           28      1       0

我想使用数组公式以几种不同的方式查询数据。我想:

  1. 对于每个 ID,找到 Group1 = 1 的第一个迭代。
  2. 对于每个 ID,Group1 = 1 时的最大值是多少。
  3. 对于每个 ID,当 Group1 = 1 时,Group1 = 1 迭代了多少次才能达到最大值。

我已经知道如何通过{=MAX(IF(A:A=A2,C:C))}为每个 ID 指定最大值

我们将不胜感激。到目前为止,我已经浏览了一些快速教程,我愿意浏览您可能知道的任何其他好的资源。

【问题讨论】:

  • 文本优先于图像。它可以帮助我们复制您的情况
  • 感谢转文字的好心人。我很抱歉。

标签: excel excel-formula array-formulas


【解决方案1】:

看看这个并告诉我你的想法——尤其是问题 3

我的设置是这样的

所有公式往下拖,如下:

B14 中的公式(问题 1)

{=INDEX($B$2:$B$9,MATCH(1,($A$2:$A$9=A14)*($D$2:$D$9=1),0))}

G14 中的公式(问题 2)

{=MAX(($A$2:$A$9=$F14)*($D$2:$D$9=1)*$C$2:$C$9)}

K14 中的公式(问题 3)

{=SUM(($A$2:$A$9=J14)*($C$2:$C$9=G14)*$B$2:$B$9)}

更新

如果您想知道在 ID=2 中 Group1=1 的次数达到我们在问题 2 中找到的 ID =2 的最大值之前,我会这样继续:

在您的数据中添加另一列,我将其标记为:Group1 Passes。将其放在新列F2 中,然后向下拖动。

=COUNTIFS($A$2:A2,A2,$D$2:D2,1)

然后您可以在K14中使用以下内容

=SUM(($A$2:$A$9=J14)*($C$2:$C$9=G14)*($D$2:$D$9=1)*$F$2:$F$9)

【讨论】:

  • 这很有帮助,你不知道。即使只是看到你如何解决问题来提出这些公式也是非常有益的。我觉得我学到了很多东西。我不相信您对问题 3(在 K14 中)的公式是正确的。它显示了达到最大值的总迭代次数,而不是 Group1 迭代的次数。 (碰巧在这个例子中它们是相同的。)但这有很大帮助,所以我会尝试解决这个问题 - 我可以看到在某些时候应该引用 D 列。
  • 问题3的公式还需要一个条件来排除多个单元格具有最大数量的情况。您可以添加*($D$2:$D$9=1) 数组公式的一个很好的介绍可以在这里找到Excel array formulas, functions and constants
  • 感谢您的链接。该解决方案是计算迭代的总数,而不是 Group1 的迭代次数。我相信我让它与{=SUM(($A$2:$A$9=J14)*($D$2:$D$9=1)}一起工作?
  • 如果最大值发生在特定 ID 的最后一个 group1=1 之前怎么办?例如,将 1 放入 D4。我更新了我认为可行的答案
  • 感谢大家的意见。我真的觉得我学到了更多关于数组公式的知识。这是我在这个板上比较积极的经历之一,所以感谢你处理我的无能!
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多