Excel VBA如何统计A列唯一值的出现次数并写入对应C列
方案1:直接使用Excel公式(最简单高效)
- 选中C1单元格,输入公式
=COUNTIF(A:A,B1) - 选中C1单元格,鼠标移动到单元格右下角,当光标变成十字填充柄时下拉,自动填充到B列有值的最后一行即可完成统计。
方案2:VBA代码实现
你原本设想的逻辑需要多次遍历A列,数据量较大时效率较低,推荐用字典一次性统计所有值的出现次数,再批量写入C列,运行效率更高,适配所有Excel版本无需额外配置:
Sub 统计唯一值出现次数() Dim dic As Object, lastA As Long, lastB As Long, i As Long ' 后期绑定创建字典,无需手动引用库 Set dic = CreateObject("Scripting.Dictionary") ' 获取A列最后一个有数据的行号 lastA = Cells(Rows.Count, "A").End(xlUp).Row ' 遍历A列统计所有值的出现次数 For i = 1 To lastA If Cells(i, "A").Value <> "" Then dic(Cells(i, "A").Value) = dic(Cells(i, "A").Value) + 1 End If Next ' 获取B列最后一个有数据的行号 lastB = Cells(Rows.Count, "B").End(xlUp).Row ' 匹配B列的唯一值,写入对应统计结果到C列 For i = 1 To lastB If dic.exists(Cells(i, "B").Value) Then Cells(i, "C").Value = dic(Cells(i, "B").Value) Else Cells(i, "C").Value = 0 End If Next ' 释放对象 Set dic = Nothing End Sub
内容的提问来源于stack exchange,提问作者Mvxlzz
相关产品推荐
相关产品推荐

