我正在尝试编写一个宏来计算列中的重复值。它们已经按升序排序,因此我尝试对冒泡排序进行修改,比较 C 列中的值,如果与之前的相同,则增加计数并将其打印到 H 列中。尝试运行代码,它告诉我我的“If”语句超出范围。你能看出我做错了什么吗? VBA 语法对我来说很新。感谢您的帮助!
Dim colArray() As Variant
colArray() = Range(Range("C6"), Range("C6").End(xlDown)).Value
Dim a As Long, b As Long
Dim temp As Variant
For a = LBound(colArray) To UBound(colArray) - 1
For b = a + 1 To UBound(colArray)
If colArray(a) = colArray(b) Then
counter = counter + 1
Else
counter = 1
End If
temp = colArray(b)
colArray(b) = colArray(a)
colArray(a) = temp
Set countStart = Range("H6")
countStart.Offset(i - 1, 0).Value = counter
Next b
Next a
如果您已将 C 列按升序排序,以便相同的值连续,则在 H 列单元格 H2 中输入这个简单的公式并将其向下拖动即可执行您想要的操作(无需 VBA 宏):
=IF(C2=C1, H1+1,0) '' 0 = no repeats etc...
我选择计算上一行的重复次数。我宁愿避免宏,除非它们对于电子表格的功能绝对必要。许多企业不喜欢它们。 YMMV