1 情境

表格需求:

以上乱序不同行数的两个表格分别为总名单和签到表,需要在总名单中找到未签到人员。

表格特点:

  1. [表2:签到表][表1:总名单] 的子集;
  2. 两表顺序错乱;
  3. 不同姓名对应身份证号前十五位有完全相同的情况。

注意事项:
匹配数据应以身份证号为索引,且18位数字完全匹配,因为有重名和身份证号多位相同可能性,且部分函数只能处理15位字符串。

2 实现方案

2.1 方法一:countif 函数

所需函数:

  1. countif(数据列,单元格数据) = 单元格数据在数据列中出现的次数
  2. if(判断语句,成立输出,不成立输出)

输入如下公式:

=IF(COUNTIF($E$3:$E$18,B3&"*")=1,"已签到","未签到")

下拉即可,如图:

注意:

  1. 使用$绝对引用(快捷键:F4)数据列,防止相对引用下拉变动;
  2. countif函数只能识别15位数字,而身份证号有18位,若两组数据前15位相同则输出结果会产生错误,故需在单元格B3后连接通配符*,即B3&"*",强制其以文本形式匹配。

2.2 方法二:vlookup / xlookup 函数

所需函数:

  1. vlookup(查找值, 查找区域, 返回查找区域的第几列数据, 精确查找输入参数"0"or"false" 或 模糊查找输入参数"1"or"true")#注意第一参数查找值必须位于第二参数查找区域的第一列;匹配索引需格式统一。
  2. iferror(条件, 条件错误时的返回值)#这里用于处理vlookup产生的#N/A错误值,使之不影响后续公式运行;这个需求也可由功能更强大的xlookup函数第四参数替代,用法见4。
  3. len(条件) = 字符串长度
  4. xlookup(【第一参数】查找值(多条件查询用"&"连接),【第二参数】查找区域,【第三参数】值返回区域,【第四参数(可选参数)】无匹配结果返回值(省略则返回#N/A),【第五参数(可选参数)】匹配类型(-1,0,1,2),【第六参数(可选参数)】搜索模式(-2,-1,1,2))
    匹配类型:
  • 0 - 完全匹配。 如果未找到,则返回 #N/A。 这是默认选项。
  • -1 - 完全匹配。 如果没有找到,则返回下一个较小的项。
  • 1 - 完全匹配。 如果没有找到,则返回下一个较大的项。
  • 2 - 通配符匹配,其中 *, ? 和 ~ 有特殊含义。
    搜索模式:
  • 1 - 从第一项开始执行搜索。 这是默认选项。
  • -1 - 从最后一项开始执行反向搜索。
  • 2 - 执行依赖于 lookup_array 按升序排序的二进制搜索。 如果未排序,将返回无效结果。
  • 2 - 执行依赖于 lookup_array 按降序排序的二进制搜索。 如果未排序,将返回无效结果。

输入如下公式:

=VLOOKUP(A3,D:E,2,0)

下拉公式,无数据匹配处即为未签到人,如图:

进一步,考虑利用字符串长度作为限定来添加标签,由 iferror 函数将 #N/A 值赋为0,于是得到公式:

=IF(LEN(IFERROR(VLOOKUP(A3,D:E,2,0),0))>1,"已签到","未签到")

结果如下:

3 相关情境

3.1 重复项问题

3.1.1 单表格查找重复项

方法一:高级筛选

开始>>筛选>>高级筛选:勾选 选择不重复的记录,选择 在原有区域显示筛选结果 则覆盖原表,选择 将筛选结果复制到其他位置 则生成无重复数据的新表。

方法二:条件格式

3.1.2 双表格对比重复项

首先应当利用3.1.1的方法剔除单表格中的重复项,否则会导致 countif、sumproduct 等函数计数出现问题。

方法一:排序

数据量较少情况下可排序后自行比对。

方法二:countif / sumproduct 函数

统计一个表格元素在另一表格中出现的次数,从而知晓两个表格的重合项。

方法三:vlookup / xlookup 函数

返回值

【Excel】乱序不同行数的两列数据对比匹配相关推荐

  1. Excel中两列数据对比,找出不同数据如何查找重复项并统计重复次数

    Excel中两列数据对比,找出不同数据 问题1 excel如何查找重复项并统计重复次数 问题2

  2. oracle 两表两列数据对比_当表中的列数不同时,如何比较oracle中的两个表

    INTRO:下面我将展示如何做到"手工"这些工具(例如SQL Developer)可以做得更快更好.我对此(和你的!)的兴趣是双重的:学习和使用一些可以帮助解决许多其他问题的想法; ...

  3. python读取前两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  4. python提取两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  5. oracle 两表两列数据对比_【SQL】根据两列信息,整合两张表数据

    两张表数据如下: --2017年 id college score A001 北京大学 670 A002 中国人民大学 646 A003 清华大学 664 A003 清华大学         (定向) ...

  6. mysql 同一张表,两列数据对比

    1:场景=>在拼团列表中搜索拼团的状态(拼团中,拼团成功,拼团失败)表 kxp_group_lottery_group 已有关键字段组团id:group_lottery_group_id组团需要 ...

  7. oracle 两表两列数据对比_Oracle、PostgreSQL与Mysql数据写入性能对比

    最近因为工作需要,需要对Oracle和Mysql写入性能进行对比,以前都是听说Mysql性能比Oracle不是一个级别,现在亲测后,不比不知道,一比吓一跳... 追加PostgreSql性能测试数据 ...

  8. 用python提取不同的两列数据对比_比较两列数据fram中的值

    另一种方法是使用pandas.DataFrame的.loc方法,该方法返回符合布尔索引条件的行的索引位置:df.loc[(df['256'] != df['Z'])].index 输出:Int64In ...

  9. EXCELL中怎么将两列数据对比,找出相同的和不同的数据?

    假设你要从B列中找出A列里没有的数据,那你就在C1单元格里输入"=IF(ISNA(VLOOKUP(B1,A:A,1,0)),"F","T")" ...

最新文章

  1. 深度学习也利用进化论!李飞飞谈创建具身智能体,学动物进化法则
  2. 码云创建maven工程
  3. python按行读取txt文件-Python逐行读取txt文本,按符合分割词并逐行写入txt
  4. 代理(Proxy)模式
  5. c++ 无法读取内存_Linux内存机制以及手动释放swap和buffer和cache
  6. html渐变编织背景,【报Bug】uniapp设置了css渐变背景色编译时会报错
  7. 云图说 | GPU共享型AI容器,让AI开发更普及
  8. python循环绘制六角星_《Python游戏趣味编程》 第3章 美丽的圆圈画
  9. eclipse启动报错 Problems occurred when invoking code from plug-in: org.eclipse.jface
  10. JVM指令集(指令码、助记符、功能描述)(转)
  11. Django 路由系统
  12. Python基础笔记(四)
  13. 压缩数据库扩展名为.ldf的日志文件
  14. 【优化算法】爬虫搜索算法(RSA)【含Matlab源码 1838期】
  15. 视觉SLAM十四讲学习笔记-第五讲-图像和实践
  16. 普通的(贬义)存在感稀薄的解图工具RipFileSystem华丽的再现了
  17. 个人邮箱怎么在微信里登陆?
  18. 我是如何写出一本畅销技术书的
  19. word 电子签名去背景方法
  20. 最新计算机教育 小学教育,2017年小学计算机教学计划

热门文章

  1. refind引导的win10+ubuntu18.04开机启动
  2. Java 阿里命名以及注释规范
  3. 职场必备两款高效率管理工具,大有用处!
  4. 训练人物和摩托车的yolov4-tiny模型教程
  5. BUUCTF Misc 被嗅探的流量
  6. 下载到烦人的流氓软件了,电脑卡,弹窗多的看不到鼠标怎么办
  7. 2018——幸福都是奋斗出来的
  8. 什么是色彩管理,OPPO 全链路色彩管理全在哪?
  9. 公司企业网站怎么制作呢?这2种方式要了解
  10. 福大软工1816 · 第五次作业 - 结对作业2