如何使用Excel vba快速提取需要的信息?

有这样一个表格,怎么能够,通过vba代码,迅速完成所有想要的数据表?工号 产品号A123 8060111A555 8060112A123 8060113A888 8060114A555 8060215A555 8060216A123 8060217我们要的3个数据:1、工号替换成姓名,A123张三,A555李四,A888王五2、提取日期,产品号列的第2~5位数,代表完成日期0601为6月1日3、统计每天,各位工人完成的产品号日期相同的行的数量。例如:6月1日张三做了2个产品,王五2日做了0个我们要得到的表是:姓名 0601 0602张三 2 1李四 1 2王五 1 0因员工每天做的总量不固定,所以,每天的原始表总行数不固定

    在使用Excel的过程中我们可能会遇到这个问题,一个工作簿有几十个工作表,结果这些工作表的顺序不太满足要求,我们想将这些工作表快速排序。你有什么好方法来解决这个问题吗?

    2

    复杂问题还是得vba代码出马啦。alt+F11——双击thisbook——打开工作簿的代码编辑框。

    3

    复制进去如下代码。

    Sub ml()

    Dim sht As Worksheet, k&

    [a:a] = ""

    '清空A列数据

    [a1] = "目录"

    k = 1

    For Each sht In Worksheets

    '遍历工作簿中每个工作表

    k = k + 1

    '累加K值

    Cells(k, 1) = sht.Name

    '将工作表名称依次放入表格A列

    Next

    End Sub

    4

    在开发工具选项插入一个按钮。什么!你的软件怎么没有这个选项卡?看我下一篇经验你就知道怎么让它出现了。

    画好一个按钮框以后,软件让你给它指定宏代码,当然是选择产生目录啦。

    5

    点击一下获取目录(这是我重命名的,不会的话给我留言),目录就神奇的产生啦。

    6

    对目录进行筛选,排序,也可以手工排序。

    7

    然后再在代码编辑框输入这些代码。

    Sub sortsheet()

    Dim sht As Worksheet, shtname$, i&

    Set sht = ActiveSheet

    '设置变量sht为当前激活的工作表,即目录表。

    For i = 2 To sht.Cells(Rows.Count, 1).End(3).Row

    '遍历工作表A列的数据,A1以外。

    shtname = sht.Cells(i, 1)

    '将A列值赋值为字符串变量shtname

    Sheets(shtname).Move after:=Sheets(i - 1)

    '将工作表依次移动

    Next

    sht.Activate

    '重新激活目录表

    End Sub

    8

    然后再画一个按钮,指定sortsheet。

    9

    改好按钮名称后就是这样的啦,按一下按钮。

    神奇的事情就出现了,工作表居然改变了顺序。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-12

    VBA不是万能的,也需要数据比对的逻辑,即对照表,才能写代码。

    需要基础资料进行比对,工号对应姓名,Vlookup进行匹配。

    计算相同工号,相同产品的出现次数,countifs计算符合姓名和产品号相同的数量

    按照要求的格式抓取对应的数据

本回答被网友采纳
相似回答