首页 > 解决方案 > 用于执行不同分析的 VBA 数据结构

问题描述

是否有某种数据结构可以用于以下分析?从视觉上看,这就是我在 Excel 中的数据

Condition ID       Item1        Item2        Item3        ...
Ex A      1        A            B            C            ...
Ex B      2       
Ex C      3        C     
Ex A      5        D            A    
Ex C      5      

每行对应一个ID,可以有多个相同的ID。Condition 是一个字符串(上面也可以看到多个相同的条件),与任何# of Items 相关联(可以是none,也可以是重复的)。

我想要执行的功能是确定所有条件中唯一项目的总数,查看哪些项目出现最多/最少,条件和单个项目的组合最常见,以及每个条件的 ID 细分。

最好的方法是暴力破解我想回答的每个问题吗?例如,对于查找所有唯一目标的第一部分,我是否应该遍历每一行的单元格,直到单元格中的值 =“”,将每个项目添加到集合中,除非它已经存在于集合中?我觉得这样做和我想要执行的其他分析在编码和运行时间方面可能会花费太长时间?

标签: vbaexcel

解决方案


我想我想出了如何使用字典做一个部分(计算每个项目的实例数)

For row = 1 To lastRow
    For col = 1 To lastCol
        If arrayOfValues(row, col) <> "" Then
            If rawString.Exists(arrayOfValues(row, col)) Then
                rawString.Item(arrayOfValues(row, col)) = rawString.Item(arrayOfValues(row, col)) + 1
            Else
                rawString.Add arrayOfValues(row, col), 1
            End If
            Debug.Print arrayOfValues(row, col), rawString(arrayOfValues(row, col))
        End If
    Next col
Next row

推荐阅读