【问题标题】:Excel VBA - Count unique/distinct values in Column A based on criteria in Column BExcel VBA - 根据 B 列中的标准计算 A 列中的唯一/不同值
【发布时间】:2018-06-15 13:33:41
【问题描述】:

我在下面有一个工作示例代码,它将数据从一个工作簿复制到另一个工作簿。它检查“FROM”工作簿的 C 列中的值,并计算 C 列中不同的唯一值,并在第二个工作簿单元格中输出该计数/值。

到目前为止一切顺利。

我的问题是,我一直在尝试调整下面的代码以查看 F 列,以检查值是否等于特定条件,然后仅计算 C 列中在 F 列中具有该条件的项目。

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 条。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    为 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)。

    【讨论】:

    • 如此简单。非常感谢,这完全符合预期。感谢您的时间和精力 jblood94
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2017-01-03
    • 1970-01-01
    • 2023-01-03
    • 2020-12-20
    相关资源
    最近更新 更多