几个vba小程序
2013-10-28 10:24
176 查看
1.数据汇总——汇总文件夹下所有excel文件的某列,组成新的一列。
2.删除单元格中包含某些字符的行
3.另存为文本
把excel中某列的数据保存为文本,每个单元格为一行
4.vlookup函数。在当前文件夹 E:\N2021030132\12\ 下,使用vlookup函数查询所有excel文件的L列,讲结果写入A列,查询的目标区域为当前文件夹下12.xlsx的E列和F列。
现学现卖,不对的地方请大家指出来。
Sub 汇总() Dim Fso, Fld, Fl Set Fso = CreateObject("Scripting.FileSystemObject") Set Fld = Fso.getfolder(ThisWorkbook.Path & "\data\") If Fld.Files.Count > 0 Then Application.ScreenUpdating = False For Each Fl In Fld.Files xh = ThisWorkbook.Worksheets(1).[A65536].End(xlUp).Row + 1 Workbooks.Open (Fl) h = ActiveWorkbook.Worksheets(1).[A65536].End(xlUp).Row ActiveWorkbook.Worksheets(1).[a1].Resize(h, 1).Copy ThisWorkbook.Worksheets(1).Cells(xh, 1) ActiveWorkbook.Close Next Application.ScreenUpdating = True MsgBox "数据汇总完成" Else MsgBox "没有找到任何工作簿文件" End If End Sub
2.删除单元格中包含某些字符的行
Sub 删除行() For i = Sheet1.[A65536].End(xlUp).Row To 2 Step -1 If Sheet1.Cells(i, "A").Value Like "*表1*" Then Rows(i).Delete If Sheet1.Cells(i, "A").Value Like "单位:人、户" Then Rows(i).Delete If Sheet1.Cells(i, "A").Value Like "地区" Then Rows(i).Delete Next i End Sub
3.另存为文本
把excel中某列的数据保存为文本,每个单元格为一行
Sub 另存为文本() Application.ScreenUpdating = False Dim nRow As Long, nColumn%, cBT$, cTxt$ Dim str As String str = ThisWorkbook.Path str = Mid(str, 16, 4) nRow = Sheets(1).Range("A65536").End(xlUp).Row 'Range("A65536") A列所有行,注意这里是字母和数字的结合 Open ThisWorkbook.Path & "\" & str & ".txt" For Output As #1 For i = 1 To nRow cTxt = Sheets(1).Cells(i, "A") & Chr(13) Print #1, cTxt Next Close #1 'Next Application.ScreenUpdating = True 'MsgBox "ok" MsgBox "另存文本文件," & Chr(10) & Chr(10) & "已经完成!" & Chr(10) End Sub
4.vlookup函数。在当前文件夹 E:\N2021030132\12\ 下,使用vlookup函数查询所有excel文件的L列,讲结果写入A列,查询的目标区域为当前文件夹下12.xlsx的E列和F列。
Sub 匹配地名() Dim str As String Dim wb As Workbook Dim nRow As Integer Dim o As Range Dim r As Range Dim Fso, Fld, Fl str = ThisWorkbook.Path str = Mid(str, 16, 2) Set Fso = CreateObject("Scripting.FileSystemObject") Set Fld = Fso.getfolder(ThisWorkbook.Path & "\data\") Set wb = GetObject(ThisWorkbook.Path & "\" & str & ".xlsx") '12文件,文件名和目录名相同,两位数字 With wb nRow = wb.Worksheets(1).[E65536].End(xlUp).Row Set o = wb.Sheets(1).Range("E" & 1 & ":" & "F" & nRow) End With Application.DisplayAlerts = False '不显示保存文件对话框 If Fld.Files.Count > 0 Then Application.ScreenUpdating = False For Each Fl In Fld.Files Workbooks.Open (Fl) ActiveWorkbook.Sheets(1).Columns("L:L").ColumnWidth = 13.3 '设置列宽 h = ActiveWorkbook.Worksheets(1).[A65536].End(xlUp).Row For i = 1 To h ActiveWorkbook.Sheets(1).Cells(i, "A").Value = Application.WorksheetFunction _ .VLookup(ActiveWorkbook.Worksheets(1).Range("L" & i), o, 2, 0) Next ActiveWorkbook.Close True Next Application.ScreenUpdating = True MsgBox "数据完成" Else MsgBox "没有找到任何工作簿文件" End If Application.DisplayAlerts = True '显示保存文件对话框 wb.Close False Set wb = Nothing End Sub
现学现卖,不对的地方请大家指出来。
相关文章推荐
- 几个VBA的小程序示例
- 贴几个常用小程序代码,大都递归的
- 翻遍“微信小程序”的所有知乎问答,我们整理了大家最关注几个话题
- 选择题小程序的几个问题
- 用VBA来关闭其他程序
- VBA IP相关的转换程序
- 读几个小程序了解c++:Part 02(友元、常类型)
- 项目中的几个SQL程序
- 关于matconvnet的几个小程序(3)识别车牌字符
- “无任何网络提供程序接受指定的网络路径”问题的几个解决方法
- 几个DSP高手的经验介绍,编写基于DSP程序的注意事项
- 题目: 编写程序计算两个整数的二进制中有几个二进制不同
- 几个cpp程序
- 分享几个Android开发有用的程序代码
- 一个灰鸽子、一个很棒小秘书新变种、几个广告程序
- C语言比较有意思的几个小程序
- 几个有用的JSFL程序
- 从几个简单的程序看PHP的垃圾回收机制
- 优化程序性能的几个方法(来自于《深入理解计算机系统》)
- 程序的内存分配即一个由C/C++编译的程序占用的内存分为以下几个部分