我有一个包含 300 多行数据的 Excel 文档。A 列按人员姓名排序,我需要仅隔离具有以下特征的人员:少于 4工作表中出现的次数。
有没有办法删除所有数字为 4 或以上的姓名?或者,突出显示所有数字为 4 或以上的姓名?
谢谢你!
答案1
假设我们从以下开始:
我们运行这个简短的宏:
Sub RowKiller101()
Dim rKill As Range, r As Range, wf As WorksheetFunction
Dim rBig As Range
Set rBig = Intersect(Range("A:A"), ActiveSheet.UsedRange)
Set rKill = Nothing
Set wf = Application.WorksheetFunction
For Each r In rBig
If wf.CountIf(rBig, r.Value) > 3 Then
If rKill Is Nothing Then
Set rKill = r
Else
Set rKill = Union(rKill, r)
End If
End If
Next r
If rKill Is Nothing Then Exit Sub
rKill.EntireRow.Delete
End Sub
我们将得到:
答案2
对于非 VBA 解决方案:
在 B 列中输入类似的公式=countif($A:$A,$A1)
,您的电子表格现在将如下所示:
A B
1 Joe 3
2 Joe 3
3 Joe 3
4 Amy 5
5 Amy 5
6 Amy 5
7 Amy 5
8 Amy 5
然后选择A1
,转到条件格式(自定义规则)并输入公式=B1>=4
。然后将规则应用于 A 列中所需的内容。缺少锚点$
意味着规则将随应用的单元格一起移动。
答案3
Gary 的学生:VBA 解决方案,删除除 <4 人群之外的所有内容
selwyth:公式解决方案,仅过滤出 <4 人群
此答案:条件格式解决方案,仅突出显示 <4 人群
(您也可以参考Office 支持文章关于在条件格式中使用公式,事实证明,它使用COUNTIF
它作为示例。)
- 选择数据范围(在示例中,我选择了所有列
A:A
- 在
Home
功能区上,单击Conditional Formatting
,然后New Rule...
- 选择
Use a formula to determine which cells to format
- 输入公式
=COUNTIF($A:$A,$A1)<4
A。将 更改$A:$A
为您要在其中搜索重复项的任何范围。例如,它可以是$G$12:$G$48
。这$
很重要,因为它使其成为绝对引用不会因单元格不同而改变。B
.$A1
将第一的选定范围内的单元格。请注意,这里只有一个,$
因为我们只希望列是绝对的。我们希望行号(1
在本例中)相对于当前单元格。C
. 结果是,的条件格式A1
将使用公式=COUNTIF($A:$A,$A1)<4
,但对于A2
,它将使用公式=COUNTIF($A:$A,$A2)<4
。这就是控制绝对引用与相对引用($
或否$
)为您所做的。 - 单击
Format...
按钮并选择您喜欢的任何格式。在本例中,我选择用黄色背景突出显示单元格。 - 单击
OK
关闭条件格式窗口并查看结果
请注意,由于我这样做的方式,所有空白行也会突出显示。如果这对您不起作用,有几种方法可以修复它。我推荐选项 1,因为它是一种简单的方法,可以让您在列表增长时保持同步。
- 将步骤 4 中使用的公式更改为
=AND($A1<>"",COUNTIF($A:$A,$A1)<4)
- 不要像在步骤 1 中那样选择所有列
A:A
,而是只选择数据范围。 - 创建条件格式后,返回
Conditional Formatting Rules Manager
(主页功能区 > 条件格式 > 管理规则...)并将字段Applies to
从更改=$A:$A
为特定内容,例如=$A$1:$A$19
。这与使用选项 2 的结果相同,但它允许您事后更改它。