在EXCEL数据arrays中输出2个最低的值

我有约40K行文件,显示公司,部件号和价格。 下面的示例。

Company PART NUMBER PRICE COMPANY14 4063-16082-3 $4,350.00 COMPANY51 4063-16082-3 $3,481.00 COMPANY11 321-400-703-0 $3,275.00 COMPANY11 4063-16082-3 $3,200.00 COMPANY11 283200-1005 $3,200.00 COMPANY42 321-400-703-0 $2,800.00 COMPANY4 4063-16082-3 $2,750.00 COMPANY4 283200-1005 $2,750.00 COMPANY35 283200-1005 $2,495.00 COMPANY59 283200-1005 $2,250.00 COMPANY24 4063-16082-3 $1,800.00 COMPANY64 321-400-703-0 $1,145.00 COMPANY8 4063-16082-3 $1,000.00 COMPANY60 321-400-703-0 $1,000.00 COMPANY60 283200-1005 $1,000.00 COMPANY63 283200-1005 $325.00 

我需要为每个零件号码和相应的公司获得2个最低的价格值。 这是我需要的或类似的东西。

 PART NUMBER Company PRICE 283200-1005 COMPANY63 325 283200-1005 COMPANY60 1000 321-400-703-0 COMPANY60 1000 321-400-703-0 COMPANY64 1145 4063-16082-3 COMPANY8 1000 4063-16082-3 COMPANY24 1800 

我做了一个Pivot,并且在数据透视中使用了MIN函数,但不知道如何获得上面格式的TWO最低值。 这是我使用的枢轴的图片。

在这里输入图像说明

配方解决scheme

假定Sheet2是源数据,目标数据在列A中有部件号,B中的Comapny和C中的价格

 C2: =AGGREGATE(15, 6, Sheet2!$C$2:$C$17/(Sheet2!$B$2:$B$17=Sheet4!A2), 1) C3: =AGGREGATE(15, 6, Sheet2!$C$2:$C$17/(Sheet2!$B$2:$B$17=Sheet4!A2), 2) B2: (array formula: Ctrl+Shift+Enter) =INDEX(Sheet2!$A$2:$A$17,MATCH(1,(Sheet2!$B$2:$B$17=Sheet4!A2)*((Sheet2!$C$2:$C$17=C2)))) 

您可以复制B2并粘贴。 对于列C,复制C2 and C3然后粘贴到列C中。