我有一个奇怪的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
我正在使用MATCH
和OFFSET
公式来查找每本书的最后一章,首先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
的结果令我感到困惑;我不知道它为什么输出不正确。你能说出这里出了什么问题吗?
答案 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分。
问候
阿克塞尔