Excel-在a列中找到一个小于或等于4次的值,然后在B列中打印

Excel-在a列中找到一个小于或等于4次的值,然后在B列中打印,excel,Excel,我有一个按字母顺序排列的用户名列表,在a列中,有些用户名出现了很多次。 如果用户名出现的次数少于或等于4次,我想在B列中输入用户名 我是否需要一个数组来遍历列中所有不同的用户名值,以查找小于或等于4次的用户名值?请考虑: Sub dural() Dim A As Range, B As Range, v As String, K As Long Set A = Intersect(Range("A:A"), ActiveSheet.UsedRange) Set B = R

我有一个按字母顺序排列的用户名列表,在a列中,有些用户名出现了很多次。 如果用户名出现的次数少于或等于4次,我想在B列中输入用户名

我是否需要一个数组来遍历列中所有不同的用户名值,以查找小于或等于4次的用户名值?

请考虑:

Sub dural()
    Dim A As Range, B As Range, v As String, K As Long
    Set A = Intersect(Range("A:A"), ActiveSheet.UsedRange)
    Set B = Range("B:B")

    K = 1

    With Application.WorksheetFunction
    For Each aa In A
        v = aa.Value
            If v <> "" Then
                If .CountIf(A, v) <= 4 Then
                    If .CountIf(B, v) = 0 Then
                        Cells(K, "B").Value = v
                        K = K + 1

                    End If
                End If
            End If
    Next aa
    End With
End Sub
Sub-dural()
调暗A为范围,B为范围,v为字符串,K为长度
设置A=Intersect(范围(“A:A”)、ActiveSheet.UsedRange)
设置B=范围(“B:B”)
K=1
使用Application.WorksheetFunction
在一个
v=aa.值
如果v“那么
如果.CountIf(A,v)考虑:

Sub dural()
    Dim A As Range, B As Range, v As String, K As Long
    Set A = Intersect(Range("A:A"), ActiveSheet.UsedRange)
    Set B = Range("B:B")

    K = 1

    With Application.WorksheetFunction
    For Each aa In A
        v = aa.Value
            If v <> "" Then
                If .CountIf(A, v) <= 4 Then
                    If .CountIf(B, v) = 0 Then
                        Cells(K, "B").Value = v
                        K = K + 1

                    End If
                End If
            End If
    Next aa
    End With
End Sub
Sub-dural()
调暗A为范围,B为范围,v为字符串,K为长度
设置A=Intersect(范围(“A:A”)、ActiveSheet.UsedRange)
设置B=范围(“B:B”)
K=1
使用Application.WorksheetFunction
在一个
v=aa.值
如果v“那么

If.CountIf(A,v)添加一个helper列,并将以下公式放置在第二行:

=IF(AND(COUNTIF(A:A,A2)<=4,COUNTIF($A$2:A2,A2)=1),MAX($B$1:B1)+1,"")
然后抄下来


添加一个辅助列,并将以下公式放在第二行:

=IF(AND(COUNTIF(A:A,A2)<=4,COUNTIF($A$2:A2,A2)=1),MAX($B$1:B1)+1,"")
然后抄下来


不需要辅助列或VBA,只需微调IF函数:)

=IF(COUNTIFS(BE:BE,BE2)特殊>空白
  • 删除(向上移动单元格)

  • 您还可以简单地过滤掉空白/0值

    不需要辅助列或VBA,只需微调一些IF函数:)

    =IF(COUNTIFS(BE:BE,BE2)特殊>空白
  • 删除(向上移动单元格)

  • 您也可以简单地过滤掉空白/0值

    您希望列表只包含唯一的名称,还是每次都包含一个?抱歉,是的,只包含唯一的名称。因此,如果每个用户名在ADo中出现的次数少于或等于4次,我真的只需要在B列中填充每个用户名。您希望列表只包含唯一的名称,还是每次包含一个它出现了吗?对不起,是的,只有唯一的名称。因此,如果每个用户名出现的次数少于或等于4次,我实际上只在B列中填入每个用户名。不确定这是令人印象深刻的还是过多的。@DavidAndreiNed我也不确定这是令人印象深刻的还是过多的。@DavidAndreiNed我也不确定。谢谢,我在中改进了答案人们不想要空白空间,谢谢,我已经改进了答案,以防人们不想要空白空间。