我的一个excel 里面有多个工作表。要统计出所有工作表中的G列中的数据最多的前十个。如何统计

我的一个excel 里面有多个工作表。要统计出所有工作表中的G列中的数据最多的前十个。如何统计?
里面的漏洞名称在各个工作表中有些是一样的。有的是不一样的。所有统计起来很麻烦。高手解答下。

1) 建个工作表,把所有表的G列数据都放在一起,可以通过宏解决这个操作,
把下面这段代码放到新建的工作表的代码模块中,运行一下
sub GetColumnG()
dim sht as worksheet, R as long, I as long
I=1
for each sht in thisworkbook.worksheets
if sht.name<>me.name then
R=sht.range("G" & rows.count).end(xlup).row
me.range("A" & I).resize(R,1).value=sht.range("G1").resize(R,1).value
I=I+R
end if
next
end sub
2)然后做个数据透视表,计数,再排序处理一下追问

工作表有上万个。那不是要把人累死了

追答

上万个?一个工作簿里有上万个工作表?你电脑多大内存啊?
你是说有上千个文件,每个文件都有许多张工作表么?
那样用vba也能处理,但已经不是你提的这个问题的范畴了

追问

几百个工作表还是有的。兄弟最好能给咱解决下。录制个小教程。感激不尽啊

追答

1) 插入新工作表,改名"Table"
2) 新工作表中插入一个按钮(ActiveX控件),双击,自动生成单击事件过程
3)在事件过程代码中输入
on error resume next
Application.ScreenUpdating = False
Dim sht As Worksheet, R As Long, I As Long
Me.Range("A1").Value = "漏洞名称"
I = 2
For Each sht In ThisWorkbook.Worksheets
If sht.Name Me.Name Then
R = sht.Range("G" & Rows.Count).End(xlUp).Row
Me.Range("A" & I).Resize(R - 2, 1).Value = sht.Range("G3").Resize(R - 2, 1).Value
I = I + R - 2
End If
Next
Application.ScreenUpdating = True
4) 退出代码设计模式,单击按钮
5)等到全部执行完,选择A列非空数据,生成数据透视表,行字段放漏洞名称,数值区域计数漏洞名称,再重排下序。完成

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-12
我的思路是;在这个文件里编制插入一张新工作表,名为汇总工作表,在这张“汇总工作表”里编制一个汇总工作表的宏,把所有工作表上面的内容都汇总到这张“汇总工作表”里,然后用数据透视表来处理前10名的(这样处理出来的结果是所有工作表G列里汇总起来的前10名)。如果你愿意这样处理的话,请发文件到458669078,我帮你试着处理一下追问

文件属于商业机密文件不能外传的。我加你

追答

你能不能把文件简化处理一下。把不可外传的删除了

相似回答