簡體   English   中英

計算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

在此處輸入圖片說明

選項明確說明時,必須顯式聲明使用的所有變量。 通過使用Dim和Redim,可以更輕松地調試imo代碼。

至於為什么它是一個功能,則取決於編碼器。 您嘗試做的事情也可以在子宏中完成。 通過給函數賦變量來調用該函數。 在較大的程序中,這可以徹底組織事情。

這是調用該函數的子示例。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM