2014-09-01 80 views
0

我的第一张表格记录了“冰与火之歌”系列丛书中的角色。我的第二张表格记录了在冰与火之歌中有死亡的人物。在我的第一个表的第四列中,我想测试每一行以查看第二个表上是否有匹配的行;如果是的话,那个角色可以说已经死了。下面是发明了样本数据,以免破坏系列:如何根据多列值进行匹配

Characters table 
+---------+---------+-----------+---------+ 
| Title | Name | Surname | HasDied | 
+---------+---------+-----------+---------+ 
| Ser  | Jon | Skeet |   | 
| Lord | Jeff | Atwood |   | 
|   | Leo | King  |   | 
| Maester | Joel | Spolsky |   | 
| Lady | Experts | Exchange |   | 
+---------+---------+-----------+---------+ 

Death table 
+---------+---------+-----------+ 
| Title | Name | Surname | 
+---------+---------+-----------+ 
|   | Leo | King  | 
| Ser  | John | Doe  | 
| Lady | Experts | Exchange | 
+---------+---------+-----------+ 

在字符表的HasDied专栏中,我要检查行的每个值 - TitleNameSurname,以及其他任何任意字段 - 如果被评估行中的每个值都在死表的单行中找到,那么它将输出true或false(或其他有用值)。所以字符表应如下所示:

Characters table 
+---------+---------+-----------+---------+ 
| Title | Name | Surname | HasDied | 
+---------+---------+-----------+---------+ 
| Ser  | Jon | Skeet | FALSE | 
| Lord | Jeff | Atwood | FALSE | 
|   | Leo | King  | TRUE | 
| Maester | Joel | Spolsky | FALSE | 
| Lady | Experts | Exchange | TRUE | 
+---------+---------+-----------+---------+ 

我知道我可以使用MATCH来查找任何一个值死亡表,但我不能只为每列使用三个单独的MATCH公式,重要的是匹配值在同一行上。我怎样才能写出一个能够进行此搜索的公式?我使用的是LibreOffice Calc,但如果您认为他们也可以在Calc中工作,那么基于Excel的解决方案也是可以接受的。

回答

1

一种用于回答原来的问题一气呵成将阵列式建议

= NOT(ISERROR(MATCH(CONCATENATE(A2,B2,C2),CONCATENATE(A $ 11:一种$ 14 B $ 11: B $ 14,C $ 11:C $ 14),0)))

这将字符表中每个名字的三个部分连接在一起,并在死亡表中连接每个名字的三个部分组成的数组中进行查找。

+0

好的。就像Zero建议的那样,但没有帮助者列。说得通。 – Lou 2014-09-02 21:21:38

0

这花了一些认真的思考,所以我希望这是你正在寻找的答案。

什么解决的办法是在本质:

一系列的嵌套的IF语句,这里面有他们COUNTIF语句,它基本上检查,如果为每列能找到第二个表这个名字。如果是,它将检查下一列等。逻辑测试是如果每列的COUNTIF值大于0,那么我们知道该字符已经死亡。

这里是公式,它假设表是对彼此的顶部在同一工作表

=IF(COUNTIF(A$11:A$14,A2)>0,IF(COUNTIF(B$11:B$14,B2)>0,IF(COUNTIF(C$11:C$14,C2)>0,TRUE,FALSE),FALSE),FALSE) 

我希望它能帮助。

+0

好吧,它适用于所有三列都非空。因此,它将为“Lady Experts Exchange”提供正确的结果,其中包含名称,姓氏和名称,但不适用于标题栏为空的“Leo King”。你能想办法解决这个问题吗?否则,这是一个好主意:) – Lou 2014-09-02 10:47:24

+0

如果不明确,“Lady Experts Exchange”会输出真实信息,而“Leo King”会输出错误信息,而它们都应该输出正确信息。 – Lou 2014-09-02 11:11:12

+0

老实说,更好的解决方法是用&&连接单元格,然后COUNTIF要检查的字符(这样你在两个表中连接)就在死表中。但是你必须为这两个表创建一个新列,但它应该可以正常工作。 – ZeroStack 2014-09-02 12:03:01