我有一列按字母顺序排列在A列中的用户名列表,其中一些列出现多次。 我想在列B中窜改用户名,如果它出现少于或等于4次。Excel - 在A列中查找小于或等于4次的值并在列B中打印
我是否需要一个数组来查看列中所有不同的用户名值才能找到出现小于或等于4次的值?
我有一列按字母顺序排列在A列中的用户名列表,其中一些列出现多次。 我想在列B中窜改用户名,如果它出现少于或等于4次。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 = 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
不知道这是否令人印象深刻或过度。 –
@DavidAndreiNed我也不确定。 –
无需帮手列或VBA,只是一点点微调的IF函数:)
=IF(COUNTIFS(BE:BE,BE2)<=4,IF(COUNTIFS($BE$1:BE2,BE2)=1,BE2,"0"),"0")
^这里,BE是所有你的数据是,在开始第2行
作用:
如果名称出现4个或更少倍,
如果这是第一次的名称出现在列
要删除0值,即空行:
Replace All
(Ctrl-H)“0”s with nothing“”(这样你就可以...)Go To
(按Ctrl-G)> Special > Blanks
你也可以简单地过滤掉空白/ 0值的空行
谢谢,我已经改进了答案,以防人们不想要空白处 –
你想要列表包括只有唯一的名称,或者每次出现一个名称? –
对不起,只有唯一的名字。所以我真的只是B列填充每个用户名,如果它出现小于或等于4次在A –