LibreOffice MATCH为某些单元格范围生成NA结果,对其他单元格范围生成错误结果

时间:2014-09-11 11:01:46

标签: libreoffice-calc

我有一个奇怪的LibreOffice Calc问题。我在“冰之歌”和“火系列”中出版的五本书中有一章。这是一个传真:

      A                      B
1   | Book                 | Chapter
----+----------------------+-------
2   | A Game of Thrones    | 0
3   | A Game of Thrones    | 1
...
75  | A Game of Thrones    | 73
76  | A Clash of Kings     | 0
77  | A Clash of Kings     | 1
...
147 | A Storm of Swords    | 0
...
230 | A Feast for Crows    | 0
...
276 | A Feast for Crows    | 46
277 | A Dance with Dragons | 0
...
350 | A Dance with Dragons | 73

我正在使用MATCHOFFSET公式来查找每本书的最后一章,首先MATCH最后一行为Book列中的值,然后获取章节列中的值。那么,要找到权力的游戏中的最后一章:

=OFFSET("A Game of Thrones", MATCH(A4, A2:A350, 1), 0)

然后这将输出73。

这适用于前三本书。乌鸦的盛宴和龙的舞蹈不起作用。当我运行MATCH公式时:

=MATCH("A Feast for Crows", A2:A350, 1)

它应返回276,这是最后一行的数字,其值为“A Feast for Crows”,但它返回#N/A。但是,当我使用范围A75:A350时,它会返回72。如果我使用A76:A350,则会返回71,依此类推,输出会随着下限的增加而减少。直到我将范围更改为A110:A350,其中值变为167(再次减小,与范围的下限成反比。)搜索条件是正确的,没有前导或尾随空格或误入歧途的话。我正在使用LibreOffice Calc 4.3.1.2。

MATCH的结果令我感到困惑;我不知道它为什么输出不正确。你能说出这里出了什么问题吗?

2 个答案:

答案 0 :(得分:0)

你试过=MATCH("A Feast for Crows", A2:A350, 0)吗? 1将产生紧密匹配,0产生完全匹配。

答案 1 :(得分:0)

您无法使用MATCH来满足您的要求。 MATCH只能匹配searchitem的 first 出现与matchtype 0完全匹配,或者matchtype 1匹配searchregion中小于或等于searchitem的最大值的位置。但是因此假设searchregion按升序排序。事实并非如此。

请参阅:https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_MATCH_function

您可以在C1中使用以下数组公式:

{=INDEX($B$1:$B$1000;MAX(IF($A$1:$A$1000=A2;ROW($A$1:$A$1000))))}

在C1中输入不带花括号的公式,然后按[Enter]。结果应为0.现在打开函数向导(fx)并选择[x] Array复选框,然后单击[OK]。现在结果应该是73与您的数据。

现在复制并粘贴C1到C2:Cn。复制并粘贴。 填充填充句柄,因为您按原样展开数组公式,A2不会更改为A3,A4 ......

C1中的公式执行以下操作: 获得行数的最大值,其中A1:A1000 = A2("权力的游戏")和INDEX这个行号在B1:B1000。因此从B75获得73分。

问候

阿克塞尔