背景
经常接到运营这样的需求,给我一列数据,查库之后筛选之后得到 B 列数据,并在 C 列标记出 A 列哪些数据存在于 B 列中。
方式1:VLOOKUP
使用 VLOOKUP 函数,如下例如在 C2
单元格输入以下公式,其他单元格直接拖拽。
=IF(ISERROR(VLOOKUP(A2,B:B,1,FALSE)),0,1)
由于用到三个函数,下图展示每一个函数的功能:
下面是三个函数的说明,有兴趣看下~
VLOOKUP 函数
VLOOKUP(A2, B:B, 1, FALSE)
尝试在列 B
中查找 A2
单元格中的值。
- 第一个参数
A2
是要查找的值。 - 第二个参数
B:B
是查找的范围,这里只包括列B
。 - 第三个参数 1 表示返回查找范围内的第一列的值,由于查找范围本身就是一列,所以返回的就是找到的值本身。
- 第四个参数
FALSE
表示进行精确匹配。
ISERROR 函数
ISERROR(VLOOKUP(...))
检查 VLOOKUP
是否返回错误。如果 VLOOKUP
找不到 A2
中的值,则会返回一个 #N/A
错误,ISERROR
将返回 TRUE
。
IF 函数
IF(ISERROR(...), 0, 1)
根据 ISERROR
的结果返回 0 或 1。
- 如果 VLOOKUP 返回错误(即没有找到匹配项),则整个公式返回 0。
- 如果 VLOOKUP 成功找到匹配项,则返回 1。
方式2:COUNTIF
还可以使用 IF
函数结合 COUNTIF
函数来判断 A 列的某个值是否存在于 B 列,更简单一些。如果存在,就在 C 列对应的行标记为 1。例如在 C2
单元格输入以下公式:
=IF(COUNTIF(B:B, A2) > 0, 1, 0)
COUNTIF
函数
COUNTIF(B:B, A2)
:这个函数会计算在 B 列中有多少个单元格等于 A2 的值。IF(COUNTIF(B:B, A2) > 0, 1, "")
:如果在 B 列中找到了 A2 的值,COUNTIF
的结果会大于 0,此时IF
函数会返回 1;否则返回 0。
找到了 A2 的值,COUNTIF
的结果会大于 0,此时 IF
函数会返回 1;否则返回 0。
还有更好的方式欢迎讨论~