我想学习如何让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;)?
答案 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
输出我更喜欢的错误消息。您可以根据自己的喜好删除它。
希望这有帮助。