VBA宏实现Excel数据拆分:将非“总表”工作表数据独立复制

需积分: 11 1 下载量 102 浏览量 更新于2024-09-05 收藏 483B TXT 举报
在Excel中,"拆分表格"(通常指的是数据的复制和移动到新的工作表)是一项常见的操作,尤其是在处理大量数据时,可能需要将特定部分的数据独立出来,以便于管理和分析。这段代码是用VBA(Visual Basic for Applications)编写的,适用于Microsoft Excel,它定义了一个名为"拆分"的子过程(Sub),用于根据Excel工作表的名称对"总表"(或指定的"ܱ")中的数据进行拆分。 首先,我们来看看这段代码的组成部分: 1. **变量声明**: - `Dim sh As Worksheet`: 定义一个变量sh,代表工作表对象。 - `Dim arr As Variant`: 定义arr为可变类型的数组,用于存储"总表"的整个数据范围。 - `Dim brr()`: 定义brr为动态数组,用于临时存放要移动的数据行。 2. **遍历工作表**: - `For Each sh In Worksheets`: 遍历所有的工作表,除了"总表"。 - `If sh.Name <> "总表" Then`: 这个条件判断避免处理"总表"本身。 3. **数据筛选和复制**: - `For i = 3 To UBound(arr)`: 从数组arr的第三行开始(因为第一列通常包含行名或索引),检查当前行的第1列是否与当前工作表的名称匹配。 - `If arr(i, 1) = sh.Name Then`: 如果匹配,则进入内部循环,增加计数器n并复制匹配行的数据到brr数组中。 - `brr(n, s) = arr(i, s)`: 逐个复制当前行的每个单元格值。 4. **移动数据到目标工作表**: - `sh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(brr), UBound(brr, 2)) = brr`: 当找到匹配的工作表后,将brr数组中的数据移动到该工作表的最后一行下方,填充完整个列宽。 5. **结束循环**: - `Next sh`: 结束对所有工作表的遍历。 通过这个子过程,"拆分"函数会根据每个工作表的名称,将"总表"中对应的数据复制到各自的工作表上,从而实现了数据的分割和管理。这是一个实用的工具,可以帮助用户更有效地组织和分析数据,尤其是当数据量大、需要分类展示时。执行此过程前,请确保已经安装了VBA宏,并且有足够的权限来运行自定义代码。