在处理Excel数据时,有时需要对多维度的数据进行分类汇总。为了实现高效统计,可以采用嵌套字典的方式完成双层分类计数。下面介绍一种基于VBA编程语言实现的双字典统计方法。
该方法通过创建一个主字典(Dic),其键值对应第一层级的分类标识(如部门、地区等)。对于每一个主键,再建立一个子字典作为其对应的值,用于存储第二层级的分类信息(如产品类别、人员姓名等)以及相应的数值汇总。程序首先读取源数据区域并将其加载为数组(Arr),然后逐行遍历该数组。
在循环过程中,程序检查当前记录的第一列内容是否已存在于主字典中。如果不存在,则为该分类创建一个新的子字典,并将第二列的内容作为子字典的键,第三列的数值作为初始值存入;若该分类已存在,则进一步判断子字典中是否存在对应的次级键,若存在则累加数值,否则新增该项。这一机制有效避免了重复项干扰,确保每一对组合都能被正确归类和累计。
完成所有数据的读取与汇总后,程序进入输出阶段。设定一个起始单元格引用(Rng),用于指定结果输出的位置。接着获取主字典的所有键(即Brr = Dic.Keys),并按顺序在工作表中横向排列这些主分类名称,每个主分类占据两列的空间:第一列为分类名,其下方紧接该分类下所有子项的详细数据。
具体输出时,使用Transpose函数将子字典中的键数组(Keys)和值数组(Items)转置为垂直排列的二维区域,并利用Resize方法精确控制写入范围,确保数据整齐呈现。每输出完一个主分类的数据后,立即释放其对应的子字典资源,最后清除主字典本身,以优化内存使用。
整个过程实现了自动化、结构化的多级统计,特别适用于需要按两个维度进行分组求和的报表场景,例如销售数据按区域和产品的分布统计。
虽然上述VBA程序功能强大,但并非所有用户都具备编写或理解代码的能力。因此,在无法完全复现此类程序的情况下,仍可通过其他方式保护关键数据区域的安全性——比如锁定含有公式的单元格,防止误操作导致公式被覆盖或删除。
具体操作步骤如下:首先全选工作表内容(快捷键Ctrl+A),右键选择设置单元格格式,切换至保护选项卡,取消勾选锁定选项并确认。这一步的作用是先解除所有单元格的默认锁定状态,因为Excel中所有单元格初始状态下均为锁定,但只有在启用工作表保护后才会真正生效。
接下来按下F5键,打开定位对话框,点击定位条件,选择公式,确定后系统会自动选中所有包含公式的单元格。此时再次打开设置单元格格式窗口,在保护选项卡中重新勾选锁定选项并确认。这样就仅对含有公式的单元格启用了锁定属性。
进入菜单栏中的工具选项,选择保护下的保护工作表。在弹出的对话框中,可选择是否设置密码。若不设密码,其他用户仍可解除保护进行编辑;若设置了密码,则需输入正确密码才能取消保护。此外,允许此工作表的所有用户进行下方的若干权限选项可根据实际需求调整,默认通常允许用户选择单元格和格式化单元格。
一旦工作表被保护,所有被标记为锁定的公式单元格将无法直接修改。尝试双击编辑时,系统会提示该单元格或图表已被保护,不能更改。这有效防止了非授权修改。
当确实需要修改公式时,只需依次执行撤销工作表保护(输入密码如设有)、进行必要的编辑,完成后再次启用工作表保护即可。这种方式既保障了数据安全性,又保留了灵活调整的空间,是一种实用且易行的表格管理策略。


