Excel vba 实例(10)- 统计同一列中出现次数并标注

后台有伙伴留言帮忙解决一个excel问题,情况是这样的,如下图:

Excel vba 实例(10)- 统计同一列中出现次数并标注_第1张图片

一列中只有「是」「否」的两种情况,分别统计这一列「是」和「否」出现的次数,要求是出现了不同的的重新统计

问题不复杂,VBA能很快解决问题。直接上代码:

Sub count()
    Dim Rng As Range
    Dim i&, Col&, Fist, Last
    Dim count
    Set Rng = Application.InputBox("请选择单列数据列!", Type:=8)
    '用户选择数据列
    Set Rng = Intersect(Rng.Parent.UsedRange, Rng)
    'intersect语句避免用户选择整列造成无谓运算
    Col = Rng.Column 'Rng所在列
    Fist = Rng.Row
    'Rng开始行,用户选择的区域并不是一定从第一行开始,因此需要此句判断
    Last = Fist + Rng.Rows.count - 1 'Rng结束行
    Application.ScreenUpdating = False '取消屏幕更新
    Application.DisplayAlerts = False
    '取消消息提醒。当有值单元格被合并时屏蔽提示信息
    Rng.Parent.Select '激活Rng对象所在的工作表,避免跨工作表操作问题
    count = 1
    For i = Last To Fist + 1 Step -1
    '对Rng进行从后向前遍历
        If Cells(i, Col) <> Cells(i - 1, Col) Then
            Cells(i, Col + 1) = count
            count = 1
        ElseIf Cells(i, Col) = Cells(i - 1, Col) Then
            count = count + 1
        End If
    Next

End Sub

演示效果图

Excel vba 实例(10)- 统计同一列中出现次数并标注_第2张图片

把需要统计的数据粘贴进去即可,或者直接把上面的代码复制运行也行。

需要注意的是,第一行为标题行,不要粘贴数据。代码是从第二行开始统计。

同样的,永恒君直接把上面实例VBA的文件分享出来,需要的就直接使用吧。

后台回复统计即可。


不少人对VBA代码有抵触心理,其实没有那么复杂,把他看成一个稍微复杂点的函数即可。

当然如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!

至于怎么用VBA代码,可以参考之前的文章:

Excel vba 实例(1) - 批量制作工资表头

Excel vba 实例(2) - 批量将工作表拆分为单独文件

Excel vba 实例(3) - 多个工作簿批量合并

Excel vba 实例(4) - 根据已有名称,批量新建表格

Excel vba 实例(5) - 快速合并n多个相同值的单元格

Excel vba 实例(6) - 一键汇总多个sheet数据到总表

Excel vba 实例(7)-一键批量打印工作簿

Excel vba 实例(8)- 利用正则表达式进行定向提取

Excel vba 实例(9)- 批量插入、删除表格中的空行


Excel VBA功能很强大,但是要熟练的运用起来还是有一定的难度,好在永恒君帮大家搜集了几套关于VBA的视频教程,非常的实用。

需要的话,wx公号后台回复“VBA”获取吧~~


Excel vba 实例(10)- 统计同一列中出现次数并标注_第3张图片
Excel vba 实例(10)- 统计同一列中出现次数并标注_第4张图片
Excel vba 实例(10)- 统计同一列中出现次数并标注_第5张图片


欢迎交流!

你可能感兴趣的:(Excel vba 实例(10)- 统计同一列中出现次数并标注)