Excel公式中的子集

时间:2017-07-26 18:26:23

标签: excel excel-formula

我想学习如何让Excel公式理解我的子集。一个例子:

Week    Value   Number  Accept? First
1         a      11     TRUE    a    
1         b      12     TRUE    FALSE
1         c      13     FALSE   FALSE

2         d      13     FALSE   f
2         e      12     FALSE   FALSE
2         f      12     TRUE    FALSE

3         g      12     FALSE   #N/A
3         h      13     FALSE   FALSE
3         i      13     FALSE   FALSE

4         j      14     FALSE   k
4         k      14     TRUE    FALSE
4         l      12     TRUE    FALSE

列A(周)定义子集,为清楚起见分开。 "首先"使用公式

=IF(A1<>A2,INDEX($B$1:$B$100,MATCH(A2&TRUE,$A$1:$A$100&$C$1:$C$100,0)) 

这允许我在子集中选择满足条件Accept?的第一个值(看起来效率很低,所以如果有人有更好的想法,我很乐意测试它) 现在想象以下数据:

Value   Time    Price Trigger?  
  x       14     500
  a       11     490
  b       12     480
  c       13     320
  d       14     560
  e       15     570     e
  f       16     490
  g       17     520     g

X是比较值。它有2个参数:Time&amp;价钱 &#34;触发&#34;搜索列表中比X(第2行)

更长的时间和价格的值

触发器的公式如下:

=IF(AND(B3>$B$2;C3>$C$2);B1;"")

但是,如何在几周内完成同样的工作(&#34;子集&#34;)?

1 个答案:

答案 0 :(得分:0)

=IF(IFERROR(INDEX(INDEX(A:A,MATCH(A2,A:A,0)):INDEX(D:D,COUNTIF(A:A,"<="&A2)+1),MATCH(TRUE,INDEX(D:D,MATCH(A2,A:A,0)):INDEX(D:D,COUNTIF(A:A,"<="&A2)+1),0),2)=B2,FALSE),B2,FALSE)

以下是解释:

INDEX(A:A,MATCH(A2,A:A,0)):INDEX(D:D,COUNTIF(A:A,"<="&A2)+1):这是为了确定与周相对应的范围/子集,因此您将获得$A$2:$D$4, $A$5:$D$7, $A$8:$D$10, $A$11:$D$13作为结果。

MATCH(TRUE,INDEX(D:D,MATCH(A2,A:A,0)):INDEX(D:D,COUNTIF(A:A,"<="&A2)+1),0):你可能已经知道了。这是为了满足接受列的条件。但我必须再次使用INDEX列接受添加另一个范围。

然后我使用IF函数来确定结果是否等于 Value column ,否则将输出FALSE。如果你不介意第一栏上每个单元格的相同结果,你就不需要这样做。

最后,我个人不喜欢这些错误代码,因此使用IFERROR输出我更喜欢的错误消息。您可以根据自己的喜好删除它。

希望这有帮助。