-
用VBA删除空行和空列
2009-04-10 09:02:00在Excel中删除空行和空列的方法有很多,下面的方法是用VBA代码来删除工作表指定区域中的空行和空列:Option Explicit Sub Delete_Empty_Rows() Dim rnArea As Range Dim lnLastRow As Long, i As Long, j As Long...在Excel中删除空行和空列的方法有很多,下面的方法是用VBA代码来删除工作表指定区域中的空行和空列:
Option Explicit
Sub Delete_Empty_Rows()
Dim rnArea As Range
Dim lnLastRow As Long, i As Long, j As Long
Application.ScreenUpdating = False
lnLastRow = Selection.Rows.Count
Set rnArea = Selection
j = 0
For i = lnLastRow To 1 Step -1
If Application.CountA(rnArea.Rows(i)) = 0 Then
rnArea.Rows(i).Delete
j = j + 1
End If
Next i
rnArea.Resize(lnLastRow - j).Select
Application.ScreenUpdating = True
End Sub
Sub Delete_Empty_Columns()
Dim lnLastColumn As Long, i As Long, j As Long
Dim rnArea As Range
Application.ScreenUpdating = False
lnLastColumn = Selection.Columns.Count
Set rnArea = Selection
j = 0
For i = lnLastColumn To 1 Step -1
If Application.CountA(rnArea.Columns(i)) = 0 Then
rnArea.Columns(i).Delete
j = j + 1
End If
Next i
rnArea.Resize(, lnLastColumn - j).Select
Application.ScreenUpdating = False
End Sub在运行代码前,先选择需要删除空行和空列的区域。如果要删除空行,则运行Delete_Empty_Rows(),指定区域中的空行将被删除。注意所谓空行是在指定区域中的,如果在指定区域内是空行,而在指定区域外不是空行,那么这些空行还是将会被删除。删除空列则运行Delete_Empty_Columns()。
-
datagridview 选择指定列 winform_需要按指定条件批量删除工作簿?一键搞定
2020-12-28 13:48:30点上方关注我们,每天早上5分钟,让Excel多点轻松大家好,我是星光,孔子曰一日不见如隔三秋兮——多无聊的人这是~今天和大家分享的VBA小代码是按指定条件批量删除工作簿。如下图所示,文件夹下包含了多个Excel文件...点上方关注我们,每天早上5分钟,让Excel多点轻松
大家好,我是星光,孔子曰一日不见如隔三秋兮——多无聊的人这是~今天和大家分享的VBA小代码是按指定条件批量删除工作簿。
如下图所示,文件夹下包含了多个Excel文件,需要按你的任意规则对其删除全部或一部分。
1使用以下代码,将指定文件夹下文件名提取到当前工作表的A列。发Sub GetFiles() Dim strPath As String, strFileName As String, k As Long With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strPath = .SelectedItems(1) Else: Exit Sub '获取用户选择的文件夹的路径,如果未选取,则退出程序 End With If Right(strPath, 1) <> "\" Then strPath = strPath & "\" Application.ScreenUpdating = False Range("a:b").Clear: k = 1 '清除A:B列的所有 Cells(1, 1) = "旧文件名": Cells(1, 2) = "是否删除" strFileName = Dir(strPath & "*.xls*") Do While strFileName <> "" k = k + 1 Cells(k, 1) = strPath & strFileName strFileName = Dir Loop Application.DisplayAlerts = TrueEnd Sub
结果如下图所示。
2,对需要删除的文件,使用函数等方法,在B列标记“删除”。
3,复制运行以下代码,即可完成对A列标记“删除”的文件批量删除。
Sub DeleteFile()
Dim r, i As Long
r = Range("a1").CurrentRegion '数据装入数组
For i = 2 To UBound(r)
'标题行不要,从数组第二行开始遍历
If r(i, 2) = "删除" Then Kill r(i, 1) 'Kill语句删除指定文件
Next
MsgBox "完成。"
End Sub代码三五行,工作不用忙断肠,你也试一下吧~
如果你还不懂得如何运行VBA代码,可以参考:如何运行VBA代码?
依次点击菜单【进阶教程】→【VBA常用代码】可以获取更多实用VBA小代码。
小贴士:
本文第二段代码通过Kill语句从磁盘删除文件,它的语法是Kill pathname
参数pathname是必须的,一个字符串表达式,用来指定要删除的文件名,可以包含目录或文件夹以及驱动器,可以使用通配符指定多个文件。比如,删除D:\看见星光下的所有包含“星光”的Excel工作簿,代码如下:Kill "D:\看见星光\*星光*.xls*"
星号(*)是通配符,可以代替零到多个字符。本期示例文件下载:https://pan.baidu.com/s/1HK2htdV3gRWgtQS6HTE7Ww
提取码: mbuc 系统学习Excel,推荐加入我的Excel社群▼更多教程&练习
教程1:零基础学Excel(一)什么是Excel?
教程2:零基础学SQL in Excel 25篇合集
作业集:学习不练习=没学习,答题开始!
©看见星光
-
ts文件顺序太乱怎么合并_【Power Query & VBA】合并多个Excel
2020-11-30 05:42:31将多个相同字段类型的Excel文件,全部都放在一个文件夹。 然后全部统一合并到一个指定的Excel里。 {Power Query} 不仅可以将文件夹下所有的文件... 判断文件内容是否与已有字段重复,如重复,则删除列 操作步骤与演...将多个相同字段类型的Excel文件,全部都放在一个文件夹。
然后全部统一合并到一个指定的Excel里。
{Power Query}
不仅可以将文件夹下所有的文件统一合并,并把所有的工作簿内的不同Sheet一并合并。
[关键知识点]:
1. M函数,Excel.Workbook(Content,true)
2. 判断文件内容是否与已有字段重复,如重复,则删除列
操作步骤与演示视频:https://www.zhihu.com/video/1155080674686877696
{VBA}
其中我们可以Do While 循环,或者For Each也行。
用Dir函数,判断文件是否存在,以及相应的格式是否符合需求。
我们可以新建一个Excel工作簿,命名为“合并”Sub 操作指定文件里的所有文件() Dim mypath as string mypath = "D:Desktop百度经验test" '工作簿所在文件夹路径 MyFile = Dir(mypath & "*.xlsx") '获取文件夹里面文件,如果你的excel 文件后缀名不是.xlsx就要修改此处 Do While MyFile <> "" Call OpenFile(MyFile) MyFile = Dir '找寻下一个文件 Loop '循环修改工作簿内容 End Sub Function OpenFile(fileName) Set currentWorkBook = Workbooks.Open(mypath & "" & fileName) Call 合并工作表(currentWorkBook.Worksheets(1), currentWorkBook.Name) currentWorkBook.Close True '/false,这句是关闭文件,close有两个参数,true是关闭保存修改,false是关闭时不保存修改 End Function Sub 合并工作表(zuWorkBook As Worksheet, sheetName As String) WorkBookName = "合并.xlsx" '将工作表合并到此工作簿 sheetCount = Workbooks(WorkBookName).Sheets.Count zuWorkBook.Copy After:=Workbooks(WorkBookName).Sheets(sheetCount) Set mSheet = Workbooks(WorkBookName).Sheets(sheetCount + 1 mSheet.Name = sheetName '命名合并过来的工作表名为原本工作簿名称 End Sub
方法二,利用Getopenfilename,打开文件路径,并选择所需要合并的工作簿进行合并。
但这里并没有检测每张表的标题字段是否都一致,只是纯粹地在最后一行里继续添加新的内容。Option Explicit Sub mergeonexls() '合并多工作簿中指定工作表 On Error Resume Next Dim x As Variant, x1 As Variant, w As Workbook, wsh As Worksheet Dim t As Workbook, ts As Worksheet, l As Integer, h As Long Application.ScreenUpdating = False Application.DisplayAlerts = False x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _ Title:="Excel选择", MultiSelect:=True) Set t = ThisWorkbook Set ts = t.Sheets(1) '指定合并到的工作表,这里是第一张工作表 l = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Column For Each x1 In x If x1 <> False Then Set w = Workbooks.Open(x1) Set wsh = w.Sheets(1) '指定所需合并工作表,这里是第一张工作表 h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Row If l = 1 And h = 1 And ts.Cells(1, 1) = "" Then wsh.UsedRange.Copy ts.Cells(1, 1) Else wsh.UsedRange.Copy ts.Cells(h + 1, 1) End If w.Close End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
-
VBA常用技巧
2014-12-21 16:39:28113-1 多列组合框和列表框添加列表项 12 113-2 多列列表框写入工作表 12 技巧114 输入时逐步提示信息 12 技巧115 二级组合框 12 技巧116 使用DTP控件输入日期 12 技巧117 使用RefEdit控件选择区域 12 技巧118 如何... -
VBA与数据库
2015-11-19 18:07:38•实例3-27 使用parameters参数动态查询记录(DAO):指定多个参数 80 •实例3-28 使用parameters参数动态查询记录(ADO):指定单个参数 81 •实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 83 •... -
Excel_VBA教程
2014-09-22 11:36:3430选择行和列 73 31获取工作表信息 73 32往工作表输入数据 73 33返回工作表中的信息 74 34单元格格式 74 35移动,复制和删除单元格 74 36操作工作簿和工作表 75 37操作窗口(WINDOWS) 76 38管理EXCEL应用程序 76 39... -
VBA编程技巧大全
2013-08-05 09:03:19113-1 多列组合框和列表框添加列表项 259 113-2 多列列表框写入工作表 261 技巧114 输入时逐步提示信息 263 技巧115 二级组合框 270 技巧116 使用DTP控件输入日期 272 技巧117 使用RefEdit控件选择区域 275 技巧118 ... -
Excel VBA 基础教程
2019-01-01 18:51:066 删除........................................................................ 6 打开........................................................................ 6 读入...................................... -
ExcelVBA程序设计.doc
2011-04-05 21:32:5130选择行和列 73 31获取工作表信息 73 32往工作表输入数据 73 33返回工作表中的信息 74 34单元格格式 74 35移动,复制和删除单元格 74 36操作工作簿和工作表 75 37操作窗口(WINDOWS) 76 38管理EXCEL应用程序 76 39... -
Excel VBA程序设计.doc
2009-07-06 22:16:1210.在Case子句里确定多个表达式 130 11.接下来… 130 第六章 在VBA中重复操作 130 1.Do Loops: Do…While和Do…Until 130 2.观察过程执行 133 3.While…Wend循环 134 4.For…Next 循环 135 5.For Each…Next循环 136... -
Excel_VBA程序设计.pdf
2009-08-31 23:05:20非常详尽的Excel_VBA程序设计,好不容易才整理搜索到的。 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 ...10.在Case子句里确定多个表达式 130 -
Excel VBA与数据库整合应用范例精讲
2011-10-29 18:48:38实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE... -
Excel VBA实用技巧大全 附书源码
2010-10-08 18:59:2404186删除多行或多列 04187删除工作表的全部单元格 04188移动单元格 04189复制单元格(复制全部内容) 04190复制单元格的值(PasteSpecial方法) 04191复制单元格的值(Value属性) 04192复制单元格的数据和公式... -
我整理的VBA 自定义函数大全 共138页
2008-11-21 16:14:03136.在Excel中对多列进行填充 137.对选定的范围进行数据填充(忽略单元格格式) 138.VBA Project加密及解密 139.列出收藏夹中的网址 140.计算两个日期之间相隔的年份,比如年龄,工龄等.可计算从1000年01月01日起的... -
excel中161个VBA_自定义函数超级实用
2018-03-28 08:36:32函数作用:返回指定列数的列标.......................42 '13.函数作用:用指定字符替换某字符.....................43 '14.函数作用:从右边开始查找指定字符在字符串中的位置...43 '15.函数作用:从右边开始查找指定... -
EXCEL编程VBA高级教程
2015-04-16 11:40:55删除........................................................................6 打开........................................................................6 读入........................................... -
Excel VBA程序设计 CHM格式 带全文检索
2008-11-26 23:40:0510.在Case子句里确定多个表达式 117 11.接下来… 117 第六章 在VBA中重复操作 118 1.Do Loops: Do…While和Do…Until 118 2.观察过程执行 121 3.While…Wend循环 121 4.For…Next 循环 122 5.For Each…Next循环 123... -
Excel VBA与数据库整合应用范例精讲书及源代码
2014-07-31 19:24:02实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE... -
中文版Excel.2007高级VBA编程宝典 1/2
2012-04-06 16:00:1610.9.1 指定函数类别 10.9.2 添加函数说明 10.10 使用加载宏存储自定义的函数 10.11 使用Windows API 10.11.1 Windows API示例 10.11.2 确定Windows目录 10.11.3 检测Shift键 10.11.4 了解更多有关... -
中文版Excel.2007高级VBA编程宝典 2/2
2012-04-06 16:41:3811.1.11 删除所有空行 11.1.12 任意次数地复制行 11.1.13 确定单元格区域是否包含在另一个单元格区域内 11.1.14 确定单元格的数据类型 11.1.15 读写单元格区域 11.1.16 在单元格区域中插入值的更好方法 ... -
利用VBA代码从一个表格检索另一个表格并且复制找到的内容
2010-02-24 10:46:49Excel表格,想以其中某一列为索引,查找另一个表格中同样索引的行,找到该行的某个内容复制到原来的表格指定的位置中。还可以删除原有表格中重复的内容。应用场景非常多,比如:利用学生学号和考场分配表查找学生... -
Excel百宝箱9.0无限制破解版
2012-02-03 19:05:29【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表... -
Excel百宝箱
2012-10-27 17:09:21【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表... -
Excel百宝箱9.0无限制破解版.rar
2012-09-05 09:31:51【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除... -
excel 工具箱
2012-01-22 15:04:34【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行... -
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【工作表拆分】 将当前工作表的某列数据按指定条件拆分成多个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 【查找... -
Excel百宝箱8.0
2011-06-07 21:32:17可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【工作表拆分】 将当前工作表的某列数据按指定条件拆分成多个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 ... -
Exce百宝箱——2012版本.rar
2012-10-19 19:52:33【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...