Excel 在行中查找特定的重复字母或数字

Excel 在行中查找特定的重复字母或数字,excel,duplicates,Excel,Duplicates,我正在尝试查找行中具有重复字母的特定单元格,我需要查找除字母“s”之外具有重复字母或数字的任何单元格 例如: **Ks Kd 7s** *<- this one has two letters "K" so I want it to be selected* **As 9d 9c** *<- this one has two numbers "9" so I want it to be selected* **As 9S 8c** *<- this one

我正在尝试查找行中具有重复字母的特定单元格,我需要查找除字母“s”之外具有重复字母或数字的任何单元格

例如:

**Ks Kd 7s**   *<- this one has two letters "K" so I want it to be selected*  
**As 9d 9c**   *<- this one has two numbers "9" so I want it to be selected*  
**As 9S 8c**   *<- this one only has two letters "s", so it should not be selected*

**Ks Kd 7s***重写注释公式作为答案,假设您在单个单元格(1个字符串)中处理数据



如果要计算字符串中字符串的出现次数,可以执行以下操作:

=(Len(A1)-Len(Substitute(A1,"stringToReplace","")))/countOfCharactersInSubstituteString
例如:

A1 = "cat cat cat"
我们想知道这个字符串中有多少个“c”,所以我们使用:

stringToReplace = "c"
countOfCharactersInSubstituteString = 1
(len(A1)-len(substitute(a1,"c","")))/1
答案是3,所以出现了3次


如果我们想知道“cat”的发生次数,我们将使用:

stringToReplace = "cat"
countOfCharactersInSubstituteString = 3
(len(A1)-len(substitute(a1,"cat","")))/3
答案是3次


请注意使用了
countOfCharactersInSubstituteString
的规格化因子,这样您就不会看到删除了9个字符,而是删除了该字符串的3个匹配项


编辑

刚刚意识到我忘记了替换品周围的
len()
。。。固定的


Edit2

为此,我使用了一些辅助项: B11的公式:
=(LEN($A11)-LEN(替换($A11,B$10,”))/LEN(B$10)

您可以使用
If(#事件数>1,“!”,“)
使其更易于查看,但这将使您可以非常轻松地检查卡组合列表中的项目

在B11中使用此公式:
=IF((LEN($A11)-LEN(替换($A11,B$10,”))/LEN(B$10)>1,“X”,”)

重写注释公式作为答案,假设您正在处理单个单元格(1个字符串)中的数据



如果要计算字符串中字符串的出现次数,可以执行以下操作:

=(Len(A1)-Len(Substitute(A1,"stringToReplace","")))/countOfCharactersInSubstituteString
例如:

A1 = "cat cat cat"
我们想知道这个字符串中有多少个“c”,所以我们使用:

stringToReplace = "c"
countOfCharactersInSubstituteString = 1
(len(A1)-len(substitute(a1,"c","")))/1
答案是3,所以出现了3次


如果我们想知道“cat”的发生次数,我们将使用:

stringToReplace = "cat"
countOfCharactersInSubstituteString = 3
(len(A1)-len(substitute(a1,"cat","")))/3
答案是3次


请注意使用了
countOfCharactersInSubstituteString
的规格化因子,这样您就不会看到删除了9个字符,而是删除了该字符串的3个匹配项


编辑

刚刚意识到我忘记了替换品周围的
len()
。。。固定的


Edit2

为此,我使用了一些辅助项: B11的公式:
=(LEN($A11)-LEN(替换($A11,B$10,”))/LEN(B$10)

您可以使用
If(#事件数>1,“!”,“)
使其更易于查看,但这将使您可以非常轻松地检查卡组合列表中的项目

在B11中使用此公式:
=IF((LEN($A11)-LEN(替换($A11,B$10,”))/LEN(B$10)>1,“X”,”)

由于您的数据是三个字符,我们只关心第一个字符:

=IF(OR(LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,{1,4,7},1),""))>1),"Select","Not Select")
根据用户的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认


根据用户的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认


由于您的数据是三个字符,我们只关心第一个字符:

=IF(OR(LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,{1,4,7},1),""))>1),"Select","Not Select")
根据用户的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认


根据用户的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认


如果长度和格式始终相同,请尝试

=MAX(FREQUENCY(MATCH(MID(A2,{1,4,7},1),MID(A2,{1,4,7},1),0),MATCH(MID(A2,{1,4,7},1),MID(A2,{1,4,7},1),0)))
使用CtrlShiftEnter作为数组公式输入


还是说这太复杂了?

如果长度和格式总是一样的,试试看

=MAX(FREQUENCY(MATCH(MID(A2,{1,4,7},1),MID(A2,{1,4,7},1),0),MATCH(MID(A2,{1,4,7},1),MID(A2,{1,4,7},1),0)))
使用CtrlShiftEnter作为数组公式输入


还是这太复杂了?

这会使任何有重复字母的单元格亮起。只需选择要检查和运行的单元格:

Sub ColorDups()
    Dim r As Range
    For Each r In Selection
        If dupcheck(r.Value) Then r.Interior.ColorIndex = 27
    Next r
End Sub


Public Function dupcheck(s As String) As Boolean
    Dim L As Long, i As Long, CH As String
    dupcheck = False
    L = Len(s)
    If L < 2 Then Exit Function
    For i = 1 To L - 1
        CH = Mid(s, i, 1)
        If CH Like "[A-Z,a-z]" And CH <> "s" Then
            For j = i + 1 To L
                If CH = Mid(s, j, 1) Then
                    dupcheck = True
                    Exit Function
                End If
            Next j
        End If
    Next i
End Function
Sub ColorDups()
调光范围
对于选择中的每个r
如果dupcheck(r.Value),则r.Interior.ColorIndex=27
下一个r
端接头
公共函数dupcheck(作为字符串)作为布尔值
我和你一样长,我和你一样长,我和你一样长
dupcheck=False
L=Len(s)
如果L<2,则退出功能
对于i=1到L-1
CH=中部(s,i,1)
如果CH喜欢“[A-Z,A-Z]”和CH“s”,那么
对于j=i+1到L
如果CH=Mid(s,j,1),则
dupcheck=True
退出功能
如果结束
下一个j
如果结束
接下来我
端函数
之前:

及之后:

编辑#1:

要测试数字和字母,请替换:

If CH Like "[A-Z,a-z]" And CH <> "s" Then
如果CH喜欢“[A-Z,A-Z]”和CH“s”,那么
与:

如果CH喜欢“[A-Z,A-Z,0-9]”和CH“s”,那么

这将使任何具有重复字母的单元格高亮显示。只需选择要检查和运行的单元格:

Sub ColorDups()
    Dim r As Range
    For Each r In Selection
        If dupcheck(r.Value) Then r.Interior.ColorIndex = 27
    Next r
End Sub


Public Function dupcheck(s As String) As Boolean
    Dim L As Long, i As Long, CH As String
    dupcheck = False
    L = Len(s)
    If L < 2 Then Exit Function
    For i = 1 To L - 1
        CH = Mid(s, i, 1)
        If CH Like "[A-Z,a-z]" And CH <> "s" Then
            For j = i + 1 To L
                If CH = Mid(s, j, 1) Then
                    dupcheck = True
                    Exit Function
                End If
            Next j
        End If
    Next i
End Function
Sub ColorDups()
调光范围
对于选择中的每个r
如果dupcheck(r.Value),则r.Interior.ColorIndex=27
下一个r
端接头
公共函数dupcheck(作为字符串)作为布尔值
我和你一样长,我和你一样长,我和你一样长
dupcheck=False
L=Len(s)
如果L<2,则退出功能
对于i=1到L-1
CH=中部(s,i,1)
如果CH喜欢“[A-Z,A-Z]”和CH“s”,那么
对于j=i+1到L
如果CH=Mid(s,j,1),则
dupcheck=True
退出功能
如果结束
下一个j
如果结束
接下来我
端函数
之前:

及之后:

编辑#1:

要测试数字和字母,请替换:

If CH Like "[A-Z,a-z]" And CH <> "s" Then
如果CH喜欢“[A-Z,A-Z]”和CH“s”,那么
与:

如果CH喜欢“[A-Z,A-Z,0-9]”和CH“s”,那么

项目是否总是两个字符?位置重要吗,比如说会被选中吗?角色总是在同一个地方,它们代表扑克中的棋盘(对于某些人来说)