Excel 在行中查找特定的重复字母或数字
我正在尝试查找行中具有重复字母的特定单元格,我需要查找除字母“s”之外具有重复字母或数字的任何单元格 例如: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
**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”,那么
项目是否总是两个字符?位置重要吗,比如说会被选中吗?角色总是在同一个地方,它们代表扑克中的棋盘(对于某些人来说)