【问题标题】:Find specific duplicated letters or numbers in rows在行中查找特定的重复字母或数字
【发布时间】:2020-03-25 01:14:56
【问题描述】:

我正在尝试在行中查找具有重复字母的特定单元格,我需要找到除字母'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*

我想为选定的行设置背景颜色。我认为我应该使用过滤器来做到这一点,但是有很多情况,Excel 只允许我一次只使用 2 个过滤器。

谢谢

编辑:在几个 cmets 之后,我看到格式总是相同的,而且我总是在相同的位置有字母,所以我们想知道位置 X 上的字母是否有重复,如果这是每个单元格的格式: Xy Xy Xy

【问题讨论】:

  • 项目总是两个字符吗?职位是否重要,即Ks dK 7s 会被选中吗?
  • 字符总是在同一个地方,它们代表扑克中的棋盘,(对于玩扑克的人来说,这会更容易理解),所以我们想知道我们是否有重复的值 'X ' 如果这是格式:Xy Xy Xy
  • unclear 重复项是在单个单元格中还是在某行中的跨单元格中??
  • 重复项总是在单个单元格中
  • 如果你想计算一个字符串在一个字符串中出现的次数,你可以做类似=(Len(A1)-Substitute(A1,"stringToReplace",""))/countOfCharactersInSubstituteString的事情,例如,A1 = "cat cat cat"...=(len(A1)-substitute(a1,"c",""))/1 is 3 ,所以出现 3 次,而 =(len(A1)-substitute(a1,"cat",""))/3 是 3

标签: excel duplicates


【解决方案1】:

这将高亮任何具有重复字母的单元格。只需选择您希望检查并运行的单元格:

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

之前:

之后:

编辑#1:

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

If CH Like "[A-Z,a-z]" And CH <> "s" Then

与:

If CH Like "[A-Z,a-z,0-9]" And CH <> "s" Then

【讨论】:

  • 这个看起来可以,但只有字母,如果我有2个数字,它不起作用,例如:9s 8d 8c 也应该突出显示
  • @GoranB 抱歉,会修复
  • @GoranB 查看我的EDIT#1
【解决方案2】:

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

=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

作为数组公式输入

或者这是否过于详尽?

【讨论】:

  • 我的 excel 格式不接受这种类型的公式,所以我按照 Gary 的建议使用了 VBA,但感谢您的帮助和时间,非常感谢 @Tom
【解决方案3】:

重写注释公式作为答案,假设您正在处理单个单元格中的数据(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 次。


如果我们想知道“猫”的出现次数,我们会使用:

stringToReplace = "cat"
countOfCharactersInSubstituteString = 3
(len(A1)-len(substitute(a1,"cat","")))/3

答案是出现 3 次。


注意countOfCharactersInSubstituteString 的归一化因子的使用,这样您就不会看到 9 个字符被删除,而是该字符串出现了 3 次。


编辑

刚刚意识到我忘记了替代品周围的len()...已修复。


编辑2

我为此使用了一些辅助项目: B11 中的公式:=(LEN($A11)-LEN(SUBSTITUTE($A11,B$10,"")))/LEN(B$10)

您可以使用If(#occurrences&gt;1,"!","") 使其更易于查看,但这可以让您非常轻松地查看卡片组合列表中的项目。

在 B11 中使用这个公式:=IF((LEN($A11)-LEN(SUBSTITUTE($A11,B$10,"")))/LEN(B$10)&gt;1,"X","")

【讨论】:

  • 您的逻辑对我来说听起来不错,但我不断收到此错误“此公式有问题。不尝试键入公式?...”
  • 我仍然收到同样的错误,不仅来自您,而且来自其他解决方案,据我所知,问题是我的小数分隔符设置不同,所以我必须使用;而不是,在公式或类似的东西中,我试图弄清楚我需要在公式中修复什么才能使其工作
【解决方案4】:

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

=IF(OR(LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,{1,4,7},1),""))>1),"Select","Not Select")

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


=IF(ISERROR(MODE.SNGL(MATCH(MID(A1,{1,4,7},1),MID(A1,{1,4,7},1),0))),"Not Select","Select")

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

【讨论】:

    猜你喜欢
    • 2017-09-25
    • 2018-11-30
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2023-04-04
    • 2018-11-22
    相关资源
    最近更新 更多