精华内容
下载资源
问答
  • 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()。

    展开全文
  • 点上方关注我们,每天早上5分钟,让Excel多点轻松大家好,我是星光,孔子曰一日不见如隔三秋兮——无聊的人这是~今天和大家分享的VBA小代码是按指定条件批量删除工作簿。如下图所示,文件夹下包含了个Excel文件...

    点上方关注我们,每天早上5分钟,让Excel多点轻松49bc1299cfb9a26d6cd1bf19378c0409.gif

    大家好,我是星光,孔子曰一日不见如隔三秋兮——多无聊的人这是~今天和大家分享的VBA小代码是按指定条件批量删除工作簿。
    如下图所示,文件夹下包含了多个Excel文件,需要按你的任意规则对其删除全部或一部分。

    2fff52bf3b918d9f7ae5536d0c3c62fe.png


     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

    结果如下图所示。

    14e6e024bf58d2a8df1760ed855cf8c7.png

     2,对需要删除的文件,使用函数等方法,在B列标记“删除

    fcc7a4a0a67bb046c5133697fcccf009.png

     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社群d78a8e8806b519ad1a063ca777621d8e.png

    更多教程&练习

    • 教程1:零基础学Excel(一)什么是Excel?

    • 教程2:零基础学SQL in Excel 25篇合集

    • 作业集:学习不练习=没学习,答题开始!


    ©看见星光

    220559bd4f72a487fe3d358882664636.png

    展开全文
  • 个相同字段类型的Excel文件,全部都放在一个文件夹。 然后全部统一合并到一个指定的Excel里。 {Power Query} 不仅可以将文件夹下所有的文件... 判断文件内容是否与已有字段重复,如重复,则删除列 操作步骤与演...

    65d7fc4afd3c868b179ca3dfd64f345d.png

    将多个相同字段类型的Excel文件,全部都放在一个文件夹。
    然后全部统一合并到一个指定的Excel里。
    {Power Query}
    不仅可以将文件夹下所有的文件统一合并,并把所有的工作簿内的不同Sheet一并合并。
    [关键知识点]:
    1. M函数,Excel.Workbook(Content,true)
    2. 判断文件内容是否与已有字段重复,如重复,则删除列
    操作步骤与演示视频:

    1bbcb70624aad54e98c6df2bbea5c967.png
    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:28
    113-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:34
    30选择行和 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:19
    113-1 多列组合框和列表框添加列表项 259 113-2 多列列表框写入工作表 261 技巧114 输入时逐步提示信息 263 技巧115 二级组合框 270 技巧116 使用DTP控件输入日期 272 技巧117 使用RefEdit控件选择区域 275 技巧118 ...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    6 删除........................................................................ 6 打开........................................................................ 6 读入......................................
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    30选择行和 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:12
    10.在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...
  • 04186删除多行或多列 04187删除工作表的全部单元格 04188移动单元格 04189复制单元格(复制全部内容) 04190复制单元格的值(PasteSpecial方法) 04191复制单元格的值(Value属性) 04192复制单元格的数据和公式...
  • 136.在Excel中对多列进行填充 137.对选定的范围进行数据填充(忽略单元格格式) 138.VBA Project加密及解密 139.列出收藏夹中的网址 140.计算两个日期之间相隔的年份,比如年龄,工龄等.可计算从1000年01月01日起的...
  • 函数作用:返回指定列数的标.......................42 '13.函数作用:用指定字符替换某字符.....................43 '14.函数作用:从右边开始查找指定字符在字符串中的位置...43 '15.函数作用:从右边开始查找指定...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    删除........................................................................6 打开........................................................................6 读入...........................................
  • 10.在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...
  • 实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     10.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:38
     11.1.11 删除所有空行  11.1.12 任意次数地复制行  11.1.13 确定单元格区域是否包含在另一个单元格区域内  11.1.14 确定单元格的数据类型  11.1.15 读写单元格区域  11.1.16 在单元格区域中插入值的更好方法 ...
  • Excel表格,想以其中某一列为索引,查找另一个表格中同样索引的行,找到该行的某个内容复制到原来的表格指定的位置中。还可以删除原有表格中重复的内容。应用场景非常,比如:利用学生学号和考场分配表查找学生...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • Excel百宝箱

    2012-10-27 17:09:21
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • 【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除...
  • excel 工具箱

    2012-01-22 15:04:34
    【禁止重复值】:可以指定不允许重复,指定后该输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...
  • 【工作表拆分】 将当前工作表的某数据按指定条件拆分成个工作表,可以用任意的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与进行快速的奇偶行或奇偶快速选定操作。 【查找...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【工作表拆分】 将当前工作表的某数据按指定条件拆分成个工作表,可以用任意的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与进行快速的奇偶行或奇偶快速选定操作。 ...
  • 【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...

空空如也

空空如也

1 2 3 4 5
收藏数 99
精华内容 39
关键字:

vba删除指定多列