使用Excel VBA筛选重复值并统计发生的次数

使用Excel VBA筛选重复值并统计发生的次数,excel,vba,Excel,Vba,如何在VBA中执行此任务 例如,以下信息包含在Excel中名为fraca1的电子表格中,请注意,字母a和F是Excel中的列名,而不是数据集的一部分 A F FRACA 012313 Correction 1 FRACA 012313 Correction 2 FRACA 012313 Investigation 1 FRACA 012313 Investigation 2 FRACA 012317

如何在VBA中执行此任务

例如,以下信息包含在Excel中名为fraca1的电子表格中,请注意,字母a和F是Excel中的列名,而不是数据集的一部分

A                   F
FRACA 012313        Correction 1
FRACA 012313        Correction 2
FRACA 012313        Investigation 1
FRACA 012313        Investigation 2
FRACA 012317        Investigation 1
FRACA 012317        Investigation 2
FRACA 012317        Investigation 3
FRACA 018593        Correction 1
FRACA 035586        Correction 1
我的数据包含在几列中。我需要找到三样东西

  • A列中的唯一FRACA编号是什么
  • F列中有多少个单元格包含与每个唯一分数对应的单词“Correction”
  • F列中有多少单元格包含与每个唯一FRACA编号对应的“调查”一词
  • 然后必须将这些信息放入同一工作簿中的新电子表格中。生成的电子表格如下所示:

    A               B                 C
    FRACA No.       Correction No.    Investigation No.
    FRACA 012313    2                 2
    FRACA 012317    0                 3
    FRACA 018593    1                 0
    FRACA 035586    1                 0
    

    我希望这有帮助,这是你问题的第一部分。必须在VBA上激活Microsoft脚本运行时引用

    ''''''''''''''''''
    '1-What are the unique FRACA numbers in column A.
    ''''''''''''''''''
    Application.Calculation = xlCalculationManual 'For faster running time
    'Create the Scripting Dictionary
    Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
    Dim myFirstCol() As Variant
    Dim i As Long
    'Code Assumes data is in Sheet1 and needs to go to Sheet2 (code names)
    arrLength = WorksheetFunction.CountA(Sheet1.Columns("A:A"))
    ReDim myFirstCol(1 To arrLength)
    'First read your input column
    For i = 1 To arrLength
        myFirstCol(i) = Sheet1.Cells(i, 1)
    Next i
    'create the unique keys
    For i = LBound(myFirstCol) To UBound(myFirstCol)
        d(myFirstCol(i)) = mySecondCol(i)
    Next i
    'Now write your keys to Sheet2
    Dim v As Variant
    i = 2
    For Each v In d.Keys()
        Sheet2.Cells(i, 1) = v
        i = i + 1
    Next v
    Application.Calculation = xlCalculationAutomatic
    

    对于问题的其余部分,现在应该更容易解决FRACA的唯一值。如果我有时间,我会用另外两部分来完成答案。

    我想用透视表来完成这项任务会更容易。但是,如果您确实需要excel vba,一个问题是:A列中的数字是随机排序的还是总是出现在垂直的相邻单元格中,如示例所示?例如,在“FRACA 035586”之后是否会有另一个“FRACA 012313”?