Excel:SMALL()、IF()和ROW()使用多个条件查找值的行号-and()不起作用
我有一个名为Excel:SMALL()、IF()和ROW()使用多个条件查找值的行号-and()不起作用,excel,if-statement,excel-formula,excel-2016,Excel,If Statement,Excel Formula,Excel 2016,我有一个名为Purchases的参考电子表格,看起来与此类似: A B C D 1 Ord_ID Supplier PO_Date Receipt_Quantity 2 PO101 Aa 11/1/2017 5 3 PO102 Bb 12/1/2017
Purchases
的参考电子表格,看起来与此类似:
A B C D
1 Ord_ID Supplier PO_Date Receipt_Quantity
2 PO101 Aa 11/1/2017 5
3 PO102 Bb 12/1/2017 12
4 PO103 Cc 12/15/2017 100
5 PO104 Bb 1/15/2018 8
6 PO105 Dd 2/1/2018 30
7 PO106 Bb 3/1/2018 15
8 PO107 Bb 4/1/2018 10
...
我有一张名为Supplier Bb Data
的单独表格,它应该返回供应商Bb的采购
数据的行号。公式如下所示,位于单元格A10
、A11
、A12
等中:
=SMALL(IF('Purchases'!$B:$B=$A$1, ROW('Purchases'!$B:$B)), ROW(1:1))
=SMALL(IF('Purchases'!$B:$B=$A$1, ROW('Purchases'!$B:$B)), ROW(2:2))
=SMALL(IF('Purchases'!$B:$B=$A$1, ROW('Purchases'!$B:$B)), ROW(3:3))
...
供应商Bb数据中的A1
包含要查找的值“Bb”
这个公式有效;它将返回采购
中包含供应商Bb采购订单的行号。(3
,5
,7
,8
等)
但是,我希望能够返回更具体的数据:其中Supplier=Bb
和PO_Date>=2018年1月1日
,以及PO_Date=$A$2,'购买$C$CAND函数本身执行循环(数组样式)计算。随后,AND或or函数不能很好地与数组样式(CSE)公式中的其他函数配合使用。将条件堆叠在嵌套的IF或use AGGREGATE中
'array style with CSE
=SMALL(IF(Purchases!$B:$B=$A$1, IF(Purchases!$C:$C>=$A$2, IF(Purchases!$C:$C<=$A$3, ROW($B:$B)))), ROW(1:1))
'standard style without CSE
=AGGREGATE(15, 7, ROW(B:B)/((Purchases!B:B=A$1)*(Purchases!C:C>=A$2)*(Purchases!C:C<=A$3)), ROW(1:1))
或者,您可以将SMALL+IF与SUMPRODUCT功能结合使用(Ctrl+Shift+Enter):
=IFERROR(小型产品(如果((购买)$B$1:$B$8=$A$1)*(购买)$C$1:$C$8>=$A$2)*(购买)$C$1:$C$8
'array style with CSE
=SMALL(IF(Purchases!$B:$B=$A$1, IF(Purchases!$C:$C>=$A$2, IF(Purchases!$C:$C<=$A$3, ROW($B:$B)))), ROW(1:1))
'standard style without CSE
=AGGREGATE(15, 7, ROW(B:B)/((Purchases!B:B=A$1)*(Purchases!C:C>=A$2)*(Purchases!C:C<=A$3)), ROW(1:1))
=AGGREGATE(15, 7, ROW($1:$999)/((Purchases!B$1:B$999=A$1)*(Purchases!C$1:C$999>=A$2)*(Purchases!C$1:C$999<=A$3)), ROW(1:1))
=IFERROR(SUMPRODUCT(SMALL(IF((Purchases!$B$1:$B$8=$A$1)*(Purchases!$C$1:$C$8>=$A$2)*(Purchases!$C$1:$C$8<=$A$3)=0,"",(ROW(Purchases!$B$1:$B$8))),ROW(1:1))),"")