2012-03-25 70 views
1

我试图让使用多个条件列的匹配,如下面的例子多个条件:匹配列使用POI

A1: Part B1: Code C1: Price D1: Find Part E1: Find Code 
A2: x  B2: 11  C2: 5.00 D2: y   E2: 12 
A3: x  B3: 12  C3: 6.00 
A4: y  B4: 11  C4: 7.00 
A5: y  B5: 12  C5: 8.00 

其中D2和E2是指标分析。如果分别D2和E2匹配列A和B,我应该从对应列C(在该实例中:8.00)得到的结果

在这个例子中我试图在Excel中的下式:

=LOOKUP(D2&E2;A2:A5&B2:B5;C2:C5) 
{=INDEX($C$2:$C$5;MATCH(D2&E2;$A$2:$A$5&$B$2:$B$5;0))} 
=SUMPRODUCT(--(A2:A5=D2);--(B2:B5=E2);INDEX(C2:C5;0;0)) 
=SUMPRODUCT(--(A2:A5=D2);--(B2:B5=E2);C2:C5) 

所有这些都给了我在Excel和OOCalc中的正确结果。但是当使用POI时,我会从第一个错误码中得到错误码15。异常意外的eval类型从第二个和异常第三个和最后一个公式的SUMPRODUCT无效的参数类型。

有谁知道如何通过使用可以被Apache POI解析的公式匹配具有多个条件的列?

注意:使用Apache POI,我成功地将列与单个条件匹配。所以,我猜这个错误不在我的代码中,但也许POI不支持上述那些公式的格式。

在此先感谢

回答

1

http://poi.apache.org/spreadsheet/formula.html说数组公式尚不支持(你的第一,第三和第四的公式只是别名,数组公式,我是affraid)

,如果你可以插入一个新列与公式如=A2&B2和匹配这个新的列,这将解决您的问题..

+0

嗯,这是真的,但我没有被允许从客户更改.xls文件。另外,由于规格繁重,我无法在我的工作簿中创建公式。最后,我不得不说服他们添加这个专栏。 =( – rafaelrezend 2012-04-19 21:35:07