计算 Excel 工作表列中的唯一值
Count unique values in Excel worksheet column
这对我来说是新的。我正在尝试计算我的 ws 列中有多少个不同的值,问题是相同的值重复了很多次,而我只想计算一次。一些朋友试图帮助我编写代码,但我现在有点不知所措,例如我不知道为什么我要使用一个函数或者为什么我必须把 "Option Explicit" 放在它上面,欢迎任何想法。
Option Explicit
Function CountUnique(datarange As Range)
Dim datarange
Dim CheckCell
Dim Counter As Double
Counter = 0
For Each CheckCell In datarange.Cells
Counter = Counter + (1 / (WorksheetFunction.CountIf(datarange, CheckCell.Value)))
Next
CountUnique = Counter
End Function
怎么样:
Option Explicit
Function CountUnique(datarange As Range) As Long
Dim c As Collection, r As Range
Set c = New Collection
On Error Resume Next
For Each r In datarange
c.Add r.Value, CStr(r.Value)
Next r
On Error GoTo 0
CountUnique = c.Count
End Function
Option Explicit 声明时,必须明确声明所有使用的变量。通过使用 Dim 和 Redim,这可以让你的代码更容易调试 imo。
至于为什么是函数,那是看coder了。您尝试做的事情也可以在子宏中完成。通过给它变量来调用函数。在较大的程序中,这可以彻底组织事情。
这里是一个子函数调用的例子。
Option Explicit
Function CountUnique(datarange As Range)
Dim CheckCell
Dim Counter As Double
Counter = 0
For Each CheckCell In datarange.Cells
Counter = Counter + (1 / (WorksheetFunction.CountIf(datarange, CheckCell.Value)))
Next
CountUnique = Counter
Msgbox Counter
End Function
通过 运行 test() 它将调用函数
Sub test()
Dim rag As Range
Set rag = Range("A1:A23")
Call CountUnique(rag)
End Sub
这对我来说是新的。我正在尝试计算我的 ws 列中有多少个不同的值,问题是相同的值重复了很多次,而我只想计算一次。一些朋友试图帮助我编写代码,但我现在有点不知所措,例如我不知道为什么我要使用一个函数或者为什么我必须把 "Option Explicit" 放在它上面,欢迎任何想法。
Option Explicit
Function CountUnique(datarange As Range)
Dim datarange
Dim CheckCell
Dim Counter As Double
Counter = 0
For Each CheckCell In datarange.Cells
Counter = Counter + (1 / (WorksheetFunction.CountIf(datarange, CheckCell.Value)))
Next
CountUnique = Counter
End Function
怎么样:
Option Explicit
Function CountUnique(datarange As Range) As Long
Dim c As Collection, r As Range
Set c = New Collection
On Error Resume Next
For Each r In datarange
c.Add r.Value, CStr(r.Value)
Next r
On Error GoTo 0
CountUnique = c.Count
End Function
Option Explicit 声明时,必须明确声明所有使用的变量。通过使用 Dim 和 Redim,这可以让你的代码更容易调试 imo。
至于为什么是函数,那是看coder了。您尝试做的事情也可以在子宏中完成。通过给它变量来调用函数。在较大的程序中,这可以彻底组织事情。
这里是一个子函数调用的例子。
Option Explicit
Function CountUnique(datarange As Range)
Dim CheckCell
Dim Counter As Double
Counter = 0
For Each CheckCell In datarange.Cells
Counter = Counter + (1 / (WorksheetFunction.CountIf(datarange, CheckCell.Value)))
Next
CountUnique = Counter
Msgbox Counter
End Function
通过 运行 test() 它将调用函数
Sub test()
Dim rag As Range
Set rag = Range("A1:A23")
Call CountUnique(rag)
End Sub