Excel VBA案例,写一个自定义函数,判断两个字符串的相似度
wptr33 2024-12-09 18:00 27 浏览
利用Excel收集数据时,如果事先没有对数据录入作出统一的规范性限制,就可能会收集到一些不统一的数据。
以上图中C列的学校名称为例,既有简称,也有全称,而且各种简称的信息也不完全一致,面对这样的表格,如果数据量很大,要在其基础上进行数据查询、数据分析之类的工作,名称不统一的问题是一个较大的麻烦。
很多时候,可能需要通过公式或其他方法求两个名称的相似度,通过相似度的高低来判断两个名称指的是否为同一个事件。
Excel中没有现成的函数可以求两个文本的相似度,我们可以使用VBA来写一个自定义函数帮助解决类似的问题:
Function TextSame(ByVal Str1 As String, ByVal Str2 As String) As Double
'-----------------------------------------------------------------
'说明:
'1.函数返回的结果为一个0到1之间的小数,代表参数两个数据的想似度
'2.函数有两个参数,代表用来对比的两个数据
'QQ:4597716(微信同号),公众号:Excel笔记
'-----------------------------------------------------------------
Application.Volatile True
Dim LenStr1 As Long, LenStr2 As Long, n As Long
LenStr1 = Len(Str1)
LenStr2 = Len(Str2)
n = 0
If LenStr1 >= LenStr2 Then
For i = 1 To LenStr2
If (InStr(1, Str1, Mid(Str2, i, 1))) > 0 Then
n = n + 1
End If
Next
TextSame = n / LenStr1
Else
For i = 1 To LenStr1
If (InStr(1, Str2, Mid(Str1, i, 1))) > 0 Then
n = n + 1
End If
Next
TextSame = n / LenStr2
End If
End Function
在Excel的VBE编辑器中新建一个模板,将以上代码复制、粘贴到模块中。
再回到Excel中,就能像使用普通函数一样使用自定义函数求两个文本的相似度了。
求得文本的相似度之后,根据自定义的标准,再借助其他函数,就能判断两个文本是否同一个内容,进行进行内容的修正了。
关注“Excel笔记”,学最适用的Excel技巧。
相关推荐
- C++选择结构,让程序自动进行决策
-
什么是选择结构?正常的程序都是从上至下顺序执行,这就是顺序结构...
- C++特性使用建议
-
1.引用参数使用引用替代指针且所有不变的引用参数必须加上const。在C语言中,如果函数需要修改变量的值,参数必须为指针,如...
- C++程序员学习Zig指南(中篇)
-
1.复合数据类型结构体与方法的对比C++类:...
- 研一自学C++啃得动吗?
-
研一自学C++啃得动吗?在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C++的资料从专业入门到高级教程」,点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!个人...
- C++关键字介绍
-
下表列出了C++中的常用关键字,这些关键字不能作为变量名或其他标识符名称。1、autoC++11的auto用于表示变量的自动类型推断。即在声明变量的时候,根据变量初始值的类型自动为此变量选择匹配的...
- Python 3.10 结构模式匹配(Match Case)
-
Python3.10结构模式匹配(MatchCase)...
- 如何使用C++开发CDR的CPG插件?
-
在正式介绍C++的CDR插件开发技术之前,咱们先来了解一下什么是CPG(CorelPlugin)插件,即Corel插件。CPG插件是什么CDR软件提供了插件机制,CPG插件就是其中的一种,另外还有...
- C/C++关键字之case
-
case关键字用在switch语句中,表示多条件语句的一个分支入口。C++本着高效原则,在编译器为每个分支生成代码时,不会生成相应的跳转代码跳出当前分支,除非程序员显式的使用break语句。这样,C/...
- 塞尔达工业革命卷到数字电路!网友:怕不是要在Switch里造Switch
-
明敏鱼羊发自凹非寺量子位|公众号QbitAI《塞尔达传说:王国之泪》发布一周多,懂物理的和不懂物理的都沉默了。...
- 一起学习C++:1.万字长文带你快速入门C++
-
前言在正式学习C++之前,有必要快速介绍下C++的基础语法。本文首先介绍一些计算机编程常见术语,然后逐行剖析解释代码含义并适当拓展其他相关知识(初学者不必深究,熟悉术语,了解知识全貌即可,未来会一步一...
- C++基础知识总结(超详细总结)
-
C++基础1C++特点C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。C++有三大特性...
- 用C实现协程库
-
协程这个东西有一段时间非常火热,特别是Go出来以后,大家都觉得这个用户态线程技术解决了很多问题,甚至用它可以支撑8亿用户,于是大家纷纷写了C/C++的协程库。实际上,我觉得协程库和支撑多少用户关系不大...
- 盘点c++几种常见的设计模式及具体实现
-
1.单例模式作用:保证一个类只有一个实例,并提供一个访问它的全局访问点,使得系统中只有唯一的一个对象实例。...
- 怎样才算学会了C++基础,一篇文章学习了解(包含Qt内容)
-
内容:C++、STL、数据结构、TCP/IP、数据库、linux、QtC++的基础(推荐两本书C++primer和C++primerplus)语法部分...
- CCF 编程能力认证 C++ 一级宝典
-
CCF编程能力等级认证(以下简称GESP)每年四次认证时间分别为:3月、6月、9月2、12月,认证方式为线下机考,认证语言包括:C++、Python和Scratch三种语言,其中Scratch认证为一...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- vba instr (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)