0

我有一个奇怪的 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

我使用MATCHandOFFSET公式来查找每本书的最后一章,首先MATCH在 Book 列中获取最后一行的值,然后从 Chapter 列中获取值。因此,要找到《权力的游戏》的最后一章:

=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. 但是,当我使用 range 时A75:A350,它​​会返回72. 如果我使用A76:A350,它会返回71,依此类推,随着下限的增加,输出会减少。直到我将范围更改为A110:A350,其中值变为167(再次减小,与范围的下限成反比)。搜索标准是正确的,没有前导或尾随空格或大写错误的单词。我正在使用 LibreOffice Calc 4.3.1.2。

结果让MATCH我感到困惑;我不知道为什么它没有正确输出。你能建议这里出了什么问题吗?

4

2 回答 2

0

您不能使用 MATCH 来满足您的要求。MATCH 只能匹配searchitem的第一个匹配项,匹配类型为 0,或者匹配类型为 1,搜索区域中小于或等于 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(“权力的游戏”)的行号的 MAX 并索引 B1:B1000 中的该行号。所以它从 B75 得到 73。

问候

阿克塞尔

于 2014-09-12T12:28:51.747 回答
0

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

于 2014-09-11T11:20:12.120 回答