我有一张包含两列的 Excel 工作表。两列都有数字。第一列包含的数字比第二列多。我想找出第二列中的所有数字中哪些在第一列中存在,哪些不存在。
例如,请考虑以下示例:
Col A | Col B
1 |2
2 |5
3 |7
4 |10
5 |15
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
答案1
我会使用 IF 和 VLOOKUP 的组合。假设您的数据在 A 列和 B 列,则在 C 列中输入以下公式
=IF(VLOOKUP(B2,A:A,1,FALSE), "Found", "Not Found")
将公式向下拖动,示例的结果将如下所示。
答案2
NOT
我确信有更好的方法可以做到这一点,但我的方法涉及、ISERROR
和的一些修改VLOOKUP
。
要根据 A 列中的列表检查 B2 中的值,请使用以下命令:
=NOT(ISERROR(VLOOKUP(B2,A:A,1,FALSE)))
一步步:
- 查找根据一列数据检查一个值,并从找到查找值的同一行中选定的单元格返回数据。
- B2是我们提供给 VLOOKUP 的查找值。
- 答:是我们希望 VLOOKUP 查找的范围。如果您想从不同的列中提取数据,则可以使用多列范围,但 VLOOKUP 将仅在范围的第一列(最左边)中搜索查找值。
- 1是我们告诉 VLOOKUP 从中拉取数据的列。这是 VLOOKUP 所必需的,但实际上与我们无关,因为我们实际上并未使用数据。这可用于从匹配行中的其他列拉取数据,只要它们在前面的参数指定的范围内即可。VLOOKUP 将从 1 开始的列计为范围中最左边的列。
- 错误的为 VLOOKUP 指定一个选项,表示我们想要精确的匹配。否则,它可能会返回不准确的结果,不符合我们的需要。
- 错误返回布尔值 TRUE 或 FALSE,以表明处理嵌套公式是否导致错误。因此,我们实际上并没有使用 VLOOKUP 来获取任何数据 - 它只是用于查看是否可以使用给定的值运行而不会出现错误。
- 不是反转嵌套公式提供的布尔值。
VLOOKUP 将尝试在 A 列中查找 B2 的值。如果出现问题(如果您的公式和数据正确,则只有当 A:A 中不存在 B2 时才会发生这种情况),它将抛出错误。这将使 IFERROR 的结果为 TRUE。但是,由于我们的问题是“值存在吗?”而不是“值不存在吗?”,我们使用 NOT 将其切换为 FALSE。类似地,如果有不是处理 VLOOKUP 时发生错误,ISERROR 将返回 FALSE,而如果使用 NOT,它将被更改为 TRUE(即:“没有错误,找到了值。”)。
请注意,上述公式将返回布尔值 TRUE/FALSE - 而不是您要求的“找到”/“未找到”值。我这样做是因为如果需要进一步处理信息,布尔输出更容易使用。举一个简单的例子,=IF(B2,"I found it!","No luck, Chuck!")
与进行比较=IF(B2="Found","I found it!","No luck, Chuck!")
。如果你真的但想要输出“找到”/“未找到”,请使用以下变体:
=IF(ISERROR(VLOOKUP(B2,A:A,1,FALSE)),"Not Found","Found")
因为我们在那里指定了我们自己的输出术语,所以我们不需要使用 NOT 来干扰 ISERROR 的输出,但我们需要记住 ISERROR 上的 TRUE 表示未找到该值 - 因此,我们将“Not Found”表示为 value_if_true,将“Found”表示为 value_if_false。
以下是两种方法的实际截图。此答案中的第一个公式用于 C 列,第二个公式用于 D 列。