|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 香川群子 于 2013-1-29 08:43 编辑
那就这样修改:- Private Sub CommandButton1_Click()
-
- arr = [a1].CurrentRegion '获取A1单元格所在区域作为原始数据区域读入数组arr
- m = UBound(arr): n = UBound(arr, 2) '获取原始数据区域行、列大小
- brr = [aa1].CurrentRegion '获取包含浅绿色关键词单元格所在区域作为输出结果区域读入数组brr
- '这里的AA1位置是我临时定的,楼主可以自己修改成实际浅绿色单元格的位置。
- '按理说,这个区域的列数应该和原始区域的列数相同吧。
-
- 'ReDim brr(1 To m, 1 To n) '重新定义数组brr用来存放结果→ 于是这一句代码就不需要了。
-
- Set d = CreateObject("Scripting.Dictionary") '定义字典d用来记录关键词行位置指针
- For i = 2 To UBound(brr) '遍历浅绿色数据有效行
- d(brr(i, 1)) = i '浅绿色关键词(数据brr第1列)存入字典,并以其列位置作为字典Item项目内容
- Next
- '以上就完成了按指定浅绿色单元格统计的字典准备工作
- '下面开始处理原始数据
- For i = 2 To m '遍历数据有效行
- t = d(arr(i, 1)) '用字典查询获取关键词(数据第1列)在字典中对应行位置
- If t <> "" Then '如果结果不为空白,则该关键字需要被统计,否则忽略
- For j = 3 To n '接下来,遍历各数据列把对应的统计数据加总到结果数组brr相应的行、列位置。
- brr(t, j) = brr(t, j) + arr(i, j) '以在字典中查询到的t变量作为记录时行位置的指针。
- Next
- End If
- Next
-
- [aa1].Resize(UBound(brr), n) = brr '输出结果到工作表指定区域
- End Sub
复制代码 |
评分
-
3
查看全部评分
-
|