簡體   English   中英

Excel VBA - 根據B列中的條件計算A列中的唯一/不同值

[英]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.

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