Excel-在公式中使用2个或更多条件对数据进行排序(从最小到最大)?

时间:2019-11-15 17:55:35

标签: excel excel-formula

我正在尝试使用特定条件在表中查找排序数据的结果

例如:

[1]: https://i.stack.imgur.com/f7bQN.jpg

黄色是ALL-JOB用户填充 RED未完成的工作按“开始日期”排序 绿色是按“结束日期”和“作业ID”完成的作业排序

我需要将数据按黄色表排序,并将结果显示在红色/绿色表中,最小到最大

任何帮助将不胜感激。提前非常感谢您。

ps。我的英语不好。如果我在语法上犯了错误,请原谅我。

1 个答案:

答案 0 :(得分:0)

使用新的动态数组功能(当前仅可用于Office 365 Insiders),几个公式将快速完成您想要的操作:

首先获取红色数据,然后在G3中输入:

=SORTBY(FILTER(B3:D100,(D3:D100="")*(B3:B100<>""),""),FILTER(B3:B100,(D3:D100="")*(B3:B100<>""),""))

然后在F3中放:

=SEQUENCE(ROWS(G3#))

在L3中:

=SORTBY(FILTER(B3:D100,(D3:D100<>"")*(B3:B100<>""),""),FILTER(D3:D100,(D3:D100<>"")*(B3:B100<>""),""),1,FILTER(C3:C100,(D3:D100<>"")*(B3:B100<>""),""),-1)

以及在K3中:

=SEQUENCE(ROWS(L3#))

Excel会相应地溢出数据,而无需将粘贴公式复制到所有单元格中。

enter image description here


没有动态数组函数,我们需要求助于INDEX / AGGREGATE,只有一种,第二种给函数增加了太多。

首先按作业编号对原始数据进行排序,然后使用以下内容

在G3中放:

=IFERROR(INDEX(B:B,AGGREGATE(15,7,ROW($B$3:$B$17)/((AGGREGATE(15,7,$B$3:$B$17/(($D$3:$D$17="")*(COUNTIFS($H$2:$H2,$B$3:$B$17)=0)),ROW($ZZ1))=$B$3:$B$17)*($D$3:$D$17="")*(COUNTIFS($H$2:$H2,$C$3:$C$17)=0)),1)),"")

上下复制范围。然后在F3中放:

=IF(G3<>"",ROW($ZZ1),"")

然后复制范围

另一个,将其放在L3中:

=IFERROR(INDEX(B:B,AGGREGATE(15,7,ROW($B$3:$B$17)/((AGGREGATE(15,7,$D$3:$D$17/(($D$3:$D$17<>"")*(COUNTIFS($H$2:$H2,$B$3:$B$17)=0)),ROW($ZZ1))=$D$3:$D$17)*($D$3:$D$17<>"")*(COUNTIFS($H$2:$H2,$C$3:$C$17)=0)),1)),"")

然后上下复制范围。然后在K3中放

=IF(L3<>"",ROW($ZZ1),"")

复制范围。

enter image description here


同时使用这两种格式,您都需要使用所需的数字格式来格式化输出单元格。