统计独特的文本值并在VBA中创builddynamic仪表板

在这里输入图像说明

我有一个我正在做的仪表板的参考文件。 我希望能够计算参考文件列中的唯一组织名称,并将该数字作为单独仪表板中列标题的数量。 我使用macroslogging器使其独特,但我不确定如何将其转换为根据ref文件中唯一组织名称的计数为我的仪表板创builddynamic数量的列。 以下是参考文件可能看起来像的图片附件示例。 所以,如果它有5个唯一的名称,我希望单独的仪表板制作5列与这些名称作为标题在每列中。

Sub Macro1() ' Macro1 Macro Columns("F:F").Select Range("F1:F10000000000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns _ ("O:O"), Unique:=True ActiveCell.FormulaR1C1 = "=ROWS(R[-11]C:R[-2]C)" End Sub 

这是通过将唯一结果加载到数组中来实现的一种方法。 这假设列标题进入A1。

 Sub Macro1() Dim wsRef As Worksheet Dim wsDB As Worksheet Set wsRef = Worksheets("reference") Set wsDB = Worksheets("Dashboard") With wsRef .Range("C1:C9").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("F1"), Unique:=True Dim arrValues As Variant arrValues = .Range("F2", .Range("F" & .Rows.Count).End(xlUp)) End With With wsDB .Range(.Range("A1"), .Cells(1, UBound(arrValues))).Value = Application.WorksheetFunction.Transpose(arrValues) End With End Sub 

使用Dictionary对象来获得唯一的值,然后遍历字典项目来创build列标题。 例如,

 myCol = 1 For Each item in oDic.items 'Presuming you want your headers to start at A1 Cells(1, myCol).Value = item myCol = myCol + 1 Next