多语言展示
当前在线:1363今日阅读:61今日分享:18

计算两个字符串中相同字符的个数

日常生活中经常需要判断两个字符串是否相同,或计算两个字符串中相同字符的个数,比如考试中的多项选择题,老师判断学生的答案中包含几个正确选项等,EXCEL内置函数中没有现成的函数可用,实现快速判断要么用数组函数,要么利用VBA自定义函数。
工具/原料
1

电脑

2

Excel

方法/步骤
1

如图表格,判断D列字符有几个与E列的相同,怎么判断呢?第一个方法可尝试利用数组函数解决。

2

要计算有几个字符相同,先要判断两列中都存在的字符,用IF与LEN函数组合来判断IF(LEN(D4)>LEN(SUBSTITUTE(D4,MID(E4,ROW(INDIRECT('1:'&LEN(E4))),1),''))。

3

接下来,对符合条件的字符计算出现的次数,利用 1/count 的方法来计算个数1/(LEN(E4)-LEN(SUBSTITUTE(E4,MID(E4,ROW(INDIRECT('1:'&LEN(E4))),1),'')))。

4

然后把上两步的判断用SUM求和,在F4单元格输入公式=SUM(IF(LEN(D4)-LEN(SUBSTITUTE(D4,MID(E4,ROW(INDIRECT('1:'&LEN(E4))),1),''))>0,1/(LEN(E4)-LEN(SUBSTITUTE(E4,MID(E4,ROW(INDIRECT('1:'&LEN(E4))),1),''))))),按ctrl+shift+回车,得出结果,然后下拉公式。

5

另外的方法是通过自定义函数,打开VBA编辑器,新建模块,输入如下代码:Function fd(a, b)    ta = a.Text: tb = b.Text    Set d = CreateObject('Scripting.Dictionary')    For i = 1 To Len(ta)        t = Mid(ta, i, 1)        d(t) = '_|_'    Next    For i = 1 To Len(tb)        t = Mid(tb, i, 1)        If d(t) = '_|_' Then d(t) = t    Next    fd = Join(Filter(d.items, '_|_', False), '')End Function

6

利用自定义的fd函数,计算相同字符个数,如图在G4单元格输入公式=fd(D4,E4),然后下拉。

注意事项

用VBA自定义函数相对简单,但前提是必须了解编程语言。

推荐信息