Excel – 在列A中查找小于或等于4次的值并在列B中打印

我有一列按字母顺序排列在A列的用户名,有些出现了很多次。 如果它出现less于或等于4次,我想在列B中引用用户名。

我是否需要一个数组来查看列中所有不同的用户名值才能find出现小于或等于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 

在这里输入图像说明

添加一个帮手列,并在第二行中放置以下公式:

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

并抄下来:

在这里输入图像说明

此时您可以过滤非空白单元格并将其复制到另一个范围。

如果你想使用一个公式来获得列表,然后把它放在另一列的行2:

 =IFERROR(INDEX(A:A,MATCH(ROW(1:1),B:B,0)),"") 

并抄下来。

在这里输入图像说明

不需要帮助列或VBA,只是一些精细调整的中频function:)

=IF(COUNTIFS(BE:BE,BE2)<=4,IF(COUNTIFS($BE$1:BE2,BE2)=1,BE2,"0"),"0")

在这里,BE是第2行开始的所有数据

它能做什么:

  1. 如果名称出现4次或更less,

  2. 如果这是名称第一次出现在列中

  3. 打印名称
  4. (否则插入0)

要删除0值,即空行:

  1. 将公式粘贴到与列相同的列上(这样可以…)
  2. .. Replace AllCtrl-H )“0”没有任何“”(这样你可以..)
  3. ..使用Go ToCtrl-G> Special > Blanksselect空行
  4. 删除(向上移位单元格)

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