![](/img/trans.png)
[英]Count unique values in column A based on a moving range of criteria in column B
[英]Excel VBA - Count unique/distinct values in Column A based on criteria in Column B
我有一個工作的代碼示例,它將數據從一個工作簿復制到另一個工作簿。 它檢查“FROM”工作簿的C列中的值,並計算C列中的不同唯一值,並在第二個工作簿單元格中輸出該計數/值。
到目前為止都很好。
我的問題是,我一直在嘗試調整下面的代碼以查看列F,檢查值是否等於特定條件,然后僅計算列C中具有該列中的cirteria的項目。
Sub CopyDataFromSourceFile()
Dim wbFrom As Workbook
Dim wbTo As Workbook
Dim Listcount As String
Dim LstRw As Long, Rng As Range, List As Object
LstRw = Cells(Rows.Count, "C").End(xlUp).Row
Set List = CreateObject("Scripting.Dictionary")
For Each Rng In Range("C9:C" & LstRw)
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
'MsgBox "There are " & List.Count & " unique values"
Listcount = List.Count
wbFrom.Sheets("Sheet1").Range("B3").Copy
wbTo.Sheets("Sheet1").Range("A1").PasteSpecial
wbTo.Sheets("Sheet1").Range("D4").Value = Listcount
wbTo.Activate
End Sub
一些數據:
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30340
1900 CUMBERLAND PKWY SE ATLANTA GA 30341
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1900 CUMBERLAND PKWY SE ATLANTA GA 30339
1901 CUMBERLAND PKWY SE GA 30340
1902 CUMBERLAND PKWY SE GA 30341
請注意地址和郵政編碼的更改。 當且僅當郵政編碼等於30339時,我想計算C列中的唯一值(唯一的地址計數)。
因此,上述示例的最終結果應該是16條記錄中的12條。
添加30339支票:
For Each Rng In Range("C9:C" & LstRw)
If Rng.Offset(0,3) = 30339 Then
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
End If
Next
獎勵提示加快速度:在構建字典之前,將Range(C9:F & LstRw)
作為變量數組讀取(請參閱http://www.cpearson.com/excel/ArraysAndRanges.aspx )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.