我的第一张桌子记录了“冰与火之歌”系列中的人物。我的第二张桌子记录了“冰与火之歌”中死亡的角色。在我的第一个表的第四列中,我想测试每一行,看看第二个表上是否有匹配的行;如果是这样,那个角色可以说已经死了。这里是发明的样本数据,以免破坏系列:
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
列中,我想检查该行的每个值 - Title
,Name
,Surname
以及任何其他任意字段 - 如果正在评估的行中的每个值都在死亡表的单行中找到,那么它将输出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的解决方案。
答案 0 :(得分:1)
一次性回答原始问题的建议是数组公式
= NOT(ISERROR(MATCH(CONCATENATE(A2,B2,C2),CONCATENATE(A $ 11:一种$ 14 B $ 11:B $ 14 C $ 11:C $ 14),0)))
这将连接字符表中每个名称的三个部分,并在死亡表中连接每个名称的三个部分形成的数组中查找。
答案 1 :(得分: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)
我希望它有所帮助。