无法通过Java + Apache POI评估公式

时间:2019-05-22 12:17:46

标签: java excel apache apache-poi

我有一张Excel工作表,正在阅读Apache POI,其中一个单元格包含以下公式。

replicateM

我已经尝试了互联网上的所有内容。另外,请执行以下操作。

=IFERROR(LOOKUP(2,1/(A3:T3<>"sample"),COLUMN(A3:T3)),9999)

每次它返回我9999的值。而不是实际值11。

1 个答案:

答案 0 :(得分:2)

公式

LOOKUP(2,1/(A3:T3<>"sample"),COLUMN(A3:T3))

违反了LOOKUP function的规则。它使用带有lookup_vector 1/(A3:T3<>"sample")的向量形式,如果#DIV/0!为假,则生成具有A3:T3<>"sample"的向量,否则为1。所以lookup_vector类似于{#DIV/0!,#DIV/0!,#DIV/0!,1,#DIV/0!,#DIV/0!,...}

但是规则明确规定:

  

重要提示: lookup_vector 中的值必须按升序放置   顺序:...,-2,-1,0,1,2,...,A-Z,FALSE,TRUE;除此以外,    LOOKUP 可能无法返回正确的值。大写和小写文本是等效的。

关于错误值,没有任何评论。即使这里可能有错误值,这些错误的“升序”又是什么?

即使对于错误的公式,Excel本身也会产生结果是一回事。但是您不能期望其他软件也会产生违反给定规则的公式的结果。