【问题标题】:Match columns with multiple criteria using POI使用 POI 匹配具有多个条件的列
【发布时间】:2012-04-02 17:02:32
【问题描述】:

我正在尝试使用多个条件对列进行 MATCH,如下例所示:

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。来自第二个的异常 Unexpected eval type,以及来自第三个和最后一个公式的异常 Invalid arg type for SUMPRODUCT

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

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

提前致谢

【问题讨论】:

    标签: java apache-poi excel-formula


    【解决方案1】:

    http://poi.apache.org/spreadsheet/formula.html 表示尚不支持数组公式(您的第 1、第 3 和第 4 个公式只是数组公式的别名,我很害怕)

    如果您可以使用=A2&B2 之类的公式插入一个新列并匹配这个新列,那将解决您的问题..

    【讨论】:

    • 嗯,没错,但我不被允许更改客户的 .xls 文件。此外,由于规格繁多,我无法在我的工作簿中虚拟创建公式。最后,我不得不说服他们添加这个专栏。 =(
    猜你喜欢
    • 2020-08-09
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多