工作中需要用到提取、汇总大量调查表单不同单元格的信息,由方便阅读但不方便汇总分析的调查表格式,整理汇总成方便透视、分析的规范格式(主要为一维表形式)。此工作如手工处理工作量大、容易出错,此时可以用VBA帮我们实现,示例代码如下:
Sub Extract() Dim i, j, m, n '取得工作表数量 n = Worksheets.Count '取得汇总表第1行的最大列序 m = Sheets(1).Range("IV1").End(xlToLeft).Column 'i循环开始,i对应工作表序号 For i = 2 To n '生成序号 Sheets(1).Cells(i + 1, 1).Value = i - 1 '取得工作表名 Sheets(1).Cells(i + 1, 2).Value = Sheets(i).Name 'j循环开始,j对应汇总表第一行指定的需引用单元格的地址字典 For j = 3 To m '取得具体内容 Sheets(1).Cells(i + 1, j).Value = Sheets(i).Range(Sheets(1).Cells(1, j)).Value Next j Next i End Sub
注意汇总表应建在sheet1。且在其第一行设置指定需提取单元格的地址,对应第2行的字段名称,如下图灰色字体部分:
给以上代码指定个按钮,点下【提取】,各个调查表单的信息就自动合并到【汇总】表了。
注意各个调查表单必须保持结构一致,否则会出错,实际应用时可使用保护工作表功能避免填写者修改表结构导致出错。
尊重作者劳动,转载请注明出处:札记-Qianrong's Blog » VBA提取汇总不同Excel工作表信息