几个有用的Excel VBA脚本

最近有个朋友要处理很多的Excel数据,但是手工处理又太慢,让我帮忙处理。通过搜索和自己的编写,帮他写了几个脚本,大大提高了工作效率。其实Excel中的脚本(宏)的功能非常方便,只要熟悉了Excel的对象,做一些常见的处理,还是非常容易的。

根据Sheet2中的数据,检查Sheet1中的重复数据,并且进行后续的操作(将重复数据删除或者拷贝出来)的操作。

 

'2010-12-22 使用Application.ScreenUpdating

Application.ScreenUpdating = False
C = 2       '第一个工作表检测B列
X = 1       '第一条检测结果放在第1行
Count = 1
First_sheet_row = Sheets(1).Cells(65536, C).End(xlUp).Row
Second_sheet_row = Sheets(2).Cells(65536, C).End(xlUp).Row
Dim To_be_deleted(5369) As String

For j = 1 To 5368
    To_be_deleted(j) = Trim(CStr(Sheets(2).Cells(j, 2).Value))
Next j

For i = 1 To First_sheet_row
    First_value = Trim(CStr(Sheets(1).Cells(i, C).Value))
    For j = 1 To 5368
        'MsgBox To_be_deleted(j)
        If First_value = To_be_deleted(j) Then
            Sheets(1).Range("A" & CStr(i) & ":Ag" & i).Delete
            Sheets(2).Cells(j, 4).Value = "Copied"
            'Sheets(2).Cells(j, 3).Value = "Copied"
            'Application.CutCopyMode = False
            'Sheets(1).Range("A" & CStr(i) & ":Ag" & i).Copy
            'Sheets(3).Paste Destination:=Sheets(3).Range("A" & i)
            'Sheets(3).Paste
            Count = Count + 1
            i = i - 1
        End If
    Next j
Next i
Application.ScreenUpdating = True
MsgBox "共删除了" & Count

这个脚本中有一些优化的地方,原来进行数据比较时,都是使用直接Cell(x,y)的方式访问并对比,另外也是分别循环,效率非常低,Excel一直处于假死的状态。

后来,先将比较小的一份数据拷贝到数组中,然后再进行循环,这样效率就提高了很多。

合并目录中具有同样数据格式的多个Excel文件

Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xls")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

 

 

合并一个文件中的多个Sheet

Application.ScreenUpdating = False
For j = 1 To Sheets.Count
    If Sheets(j).Name <> ActiveSheet.Name Then
        X = Range("A65536").End(xlUp).Row + 1
        Sheets(j).UsedRange.Copy Cells(X, 1)
    End If
Next
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

 

利用编程,可以让我们的生活更美好~~

转载于:https://www.cnblogs.com/cocowool/archive/2010/12/23/1915267.html

VBA是什么   直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是"寄生于"VB应用程序的版本.VBA和VB的区别包括如下几个方面:   1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化   2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.   3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.   尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.   * VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.   * VBA可以称作EXCEL的"遥控器".   VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.    此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序. …… …… …… …… …… …… 欢迎使用 VBScript 语言参考 通过对信息进行分组,可以使您方便地研究 Visual Basic 脚本的各个主题。 可以在“字母顺序关键字列表”中找到 VBScript 语言的所有主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。从该列表中选择要查看的主题。打开所选主题之后,就能够很容易地链接到其他相关章节。 好了,现在就开始行动,赶快进去看一看吧!学习几个语句,研究几种方法,或者熟悉几个函数。您会发现 VBScript 语言的功能是多么强大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值