专栏首页完美Excel问与答130:如何比较两列文本是否完全相同?

问与答130:如何比较两列文本是否完全相同?

Q:最近,我的一项任务是需要比较包含多行数据的两列中,每行对应列的文本是否完全相同。例如,列A中有一系列文本,列B中也有一系列文本,比较A1中的文本是B1中的文本是否完全相同,A2与B2中的文本是否完全相同,……,等等。

完全相同意味着仅“Ant”=“Ant”和“ant”=“ant”才通过测试,而“Ant”=“ant”则不会通过测试。

这样,简单地使用:

=A1=B1

对于“Ant”和“ant”肯定返回TRUE。因为它们不区分大小写。

怎样才能进行区分大小写的比较呢?

A:可以使用EXACT函数。

=EXACT(文本1, 文本2)

EXACT函数比较两个字符串是否完全相同,它执行区分大小写的比较。

然而,假设想测试“Ant”是否与“ant”完全相同但不允许使用EXACT函数,如何做?

一种方法是将两个文本值转换为它们的ASCII等效值,然后以某种方式比较这两组值。不能比较这些值的总和,因为对于不同的文本(例如“Aa”和“aA”),总和是相同的。因此,应以其他方式比较它们的ASCII值。

可以使用公式:

=CODE(MID(text, {1;2;3;4;5;6;7;8;9;10}, 1))

获取每个字符的代码。这里,假设要测试的任何字符串的最大长度只有十个字符。更短的字符串对于MID函数来说没有问题,那是因为当MID函数尝试返回例如一个四字符字符串的第十个字符时,它返回一个空字符串。

但是,当CODE尝试返回空字符串的ASCII值时,Excel会返回#VALUE!错误。这意味着必须将公式包装在IFERROR函数中,如下所示:

=IFERROR(CODE( MID( “Aa”,{1;2;3;4;5;6;7;8;9;10}, 1) ),””)

其结果应该如下:

{65;97;””;””;””;””;””;””;””;””}

也就是说,公式返回了一个由两个数字和八个空字符串组成的数组。

那么,如何比较两个数组呢?很简单:

={1;2;3}<>{3;2;1}

中间结果为:

={TRUE; FALSE; TRUE}

如果将比较公式改写为:

=({1;2;3}<>{3;2;1})+0

中间结果为:

={1;0;1}

对其求和,即:

=SUM(({1;2;3}<>{3;2;1})+0)

返回一个大于0的数值,表明两个数组不匹配。

基于上述原理,如果想要比较两列中的文本是否完全相同,对于单元格A1和B1的比较来说,可以使用公式:

=SUM((IFERROR(CODE(MID(A1,{1;2;3;4;5;6;7;8;9;10},1)),"")<>IFERROR(CODE(MID(B1,{1;2;3;4;5;6;7;8;9;10},1)),""))+0)

当单元格A1和B1中的文本不匹配时,将返回一个非零值,并且这个公式应该适用于支持IFERROR函数的任何版本的Excel——只要相比较的文本的长度不超过10个字符。

当然,使用EXACT更简单。后面的只是练练手而已!

注:本文的问题来源于exceluser.com,供有兴趣的朋友参考。

本文分享自微信公众号 - 完美Excel(excelperfect),作者:fanjy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SOTA又换庄家!谷歌130亿参数多语言模型mT5重磅来袭,101种语言轻松迁移

    前几天,Facebook发了一个百种语言互译的模型M2M-100,这边谷歌着急了,翻译可是我的老本行啊。

    新智元
  • 机器学习的第一个难点,是数据探索性分析

    当我们在进行机器学习领域的学习和研究时,遇到的第一个难点就是数据探索性分析(Exploratory Data Analysis)。虽然从各种文献中不难了解到数据...

    AI科技大本营
  • 程序员520如何脱单!基于数据为你打造一份择偶指南

    最近很多关于晒择偶标准的帖子,活脱脱把知乎变成了另一个“世纪佳缘”,回答清一色的爆照和晒条件,这对于单身狗来说是妥妥的福利。

    CDA数据分析师
  • 资源 | 100+个自然语言处理数据集大放送,再不愁找不到数据!

    大数据文摘
  • 用数据解决单身问题

    最近很多关于晒择偶标准的帖子,活脱脱把知乎变成了另一个“世纪佳缘”,回答清一色的爆照和晒条件,这对于单身狗来说是妥妥的福利。

    数据森麟
  • 每日一题C++版(合唱队)

    编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化...

    小白学视觉
  • HDFS 底层交互原理解析

    大约在 15 年前,我们大数据开发的“祖师爷”(Doug Cutting)基于 Google 经典论文“三驾马车”,陆续实现了 HDFS、MapReduce、H...

    大数据真好玩
  • java面试题2019_java面试题及答案_java面试题库

    1、一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制? 2、Java有没有goto? 3、&和&&的区别? 4、switch语句能否作用在by...

    用户7886150
  • 渗透测试中常用的SQL命令基础指南

    作为渗透测试人员,仅仅利用漏洞攻击目标然后获得一个Shell是远远不够的。尽管拿到Shell是一件很好的事情(毕竟这是我们渗透测试中非常重要的一部分),但是对客...

    企鹅号小编
  • 2019年228道Java中高级面试题(8),你会的有多少?

    129、Java 中,Serializable 与 Externalizable 的区别?

    程序员追风
  • 直接扩频通信(下)仿真

    今天给大侠带来直接扩频通信,由于篇幅较长,分三篇。今天带来下篇,也是最后一篇,仿真,话不多说,上货。

    FPGA技术江湖
  • 浅谈软件项目规模估计——怎么估?

    做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律。 —— 侯世达,哥德尔、埃舍尔、巴赫 ? 周三的下午,我像平常一样,写着代码听着歌,突然从...

    ThoughtWorks
  • 基于FPGA的直接扩频通信系统设计(下)仿真

    今天给大侠带来直接扩频通信,由于篇幅较长,分三篇。今天带来下篇,也是最后一篇,仿真,话不多说,上货。

    FPGA技术江湖
  • 完胜BERT!谷歌NLP预训练利器:小模型也有高精度,单个GPU就能训练 | 代码开源

    ELECTRA是一种新预训练方法,它能够高效地学习如何将收集来的句子进行准确分词,也就是我们通常说的token-replacement。

    量子位
  • 研究网卡地址注册时的一点思考

    我曾经写过一篇和本文标题类似的文章《研究优雅停机时的一点思考》,上文和本文都有一个共同点:网卡地址注册和优雅停机都是一个很小的知识点,但是背后牵扯到的知识点却是...

    kirito-moe
  • 研究网卡地址注册时的一点思考

    我曾经写过一篇和本文标题类似的文章《研究优雅停机时的一点思考》,上文和本文都有一个共同点:网卡地址注册和优雅停机都是一个很小的知识点,但是背后牵扯到的知识点却是...

    用户5397975
  • 洞察|深挖大数据“钻石矿” 共享经济成资本追逐热点

    2016年,《政府工作报告》中首次引入了共享经济概念,李克强总理亦将共享经济列为深挖大数据“钻石矿”的一大利器。 目前,共享经济模式正在悄然改变我们的生活。U...

    灯塔大数据
  • Linux环境下Nginx及负载均衡

    Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。

    凝神长老
  • java基础学习_基础语法(上)01_day02总结

    =============================================================================

    黑泽君

扫码关注云+社区

领取腾讯云代金券