在Excel中计算两个单元格之间相同的字符数

时间:2015-03-31 17:10:21

标签: excel-vba vba excel

我很新,不是第一次使用,但可能曾经在这里过一次。

我有一个巨大的名单,以检查它们是否有重复。

问题在于,对于列表中的同一个人,有时同名的拼写不同。

所以,我想查看一个单元格的第一个字母,看看它们是否相同。

例如,这是一个虚构的清单:

 A1 John Doe
 A2 John Dowe
 A3 John Dove

我可以使用Excel功能,它会告诉我上面的单元格中有多少个字符是相同的吗?

因此,在上面的示例中,公式所在的单元格将显示:

A1 John Doe B1 0 (or "NA" or "REF" because there's no cell to compare to above it)
 A2 John Dowe B2 7 
 A3 John Dove B3 7

因为A2和A3共享7个字符并且上面有单元格...我希望这很容易理解。

谢谢!

2 个答案:

答案 0 :(得分:0)

看看this question。它在不同的情况下询问名称匹配,但有很多很好的例子说明如何在那里列出。

这是一个非常深的兔子洞,取决于你想要的强度和深度。

答案 1 :(得分:0)

您没有给我们足够的信息。

在您的情况下,A1(“John Doe”)包含两个“o”字符。因此,下面的单元格A2(“John Dowe”)将只有6个字符。

IF 你所说的“相同字符”在同一个位置是同一个字符,那么你在A1和A2之间仍然有问题。

John Do e
John Do w e

“w”和“e”不匹配。只有6个字符是相同的。

为我们提供更多信息!

编辑#1
将此代码复制并粘贴到模块

Function compareCells(ran As Range) As Variant
Dim numSame As Integer

Dim c As Integer
Dim r As Integer
c = ran.Column  'find selected column
r = ran.Row     'find selected row

Dim a As String
Dim b As String
a = Worksheets("Ark1").Cells(r - 1, c).Value    'string of the cell above
b = Worksheets("Ark1").Cells(r, c).Value        'string of the current cell

Dim aLen As Integer
aLen = Len(a)      'check the length of the a string


Dim i As Integer
For i = 1 To aLen
    If Mid(a, i, 1) = Mid(b, i, 1) Then 'if chars in same pos are equal...
        numSame = numSame + 1
    End If
Next

compareCells = numSame

End Function

编辑#2

Function compareCells(ran As Range) As Variant
Dim numSame As Integer

Dim c As Integer
Dim r As Integer
c = ran.Column  'find selected column
r = ran.Row     'find selected row

Dim a As String
Dim b As String
a = ActiveSheet.Cells(r - 1, c).Value    'string of the cell above
b = ActiveSheet.Cells(r, c).Value        'string of the current cell

Dim aLen As Integer
aLen = Len(a)      'check the length of the a string


Dim i As Integer
For i = 1 To aLen
    If Mid(a, i, 1) = Mid(b, i, 1) Then 'if chars in same pos are equal...
        numSame = numSame + 1
    End If
Next

compareCells = numSame

End Function

使用=compareCells()并选择 要与上面的单元格进行比较的单元格