精华内容
下载资源
问答
  • 系统:Windows 7 软件:Excel 2010这个系列集锦了一些常用功能今天说说对多行多列的删除操作重点强调如何表示多行或者多列数据源形式 Part 1:多行删除通过Rows和Range两种方法都可以多行使用行号数字来表示,注意需...

    4a828dbcd6ee2d4c4891b7228cdacd3c.png

    系统:Windows 7

    软件:Excel 2010

    这个系列集锦了一些常用功能

    今天说说对多行多列的删除操作

    重点强调如何表示多行或者多列

    数据源形式

    ec5781a55b9b88dd8e66dc03d9e8f02f.png

    Part 1:多行删除

    通过Rows和Range两种方法都可以

    多行使用行号数字来表示,注意需将行号放入双引号中""

    Sub 多行删除()

    Set te = ThisWorkbook.Worksheets("示例")

    'te.Rows("3:5").Delete Shift:=xlUp

    te.Range("3:5").Delete Shift:=xlUp

    End Sub

    执行效果

    https://img-blog.csdn.net/20170813162638279?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemlzaGVuZGlhbnhpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastimg-blog.csdn.net

    Part 2:多列删除

    通过Columns和Range两种方法都可以

    列号使用字母表示,注意需将行号放入双引号中""

    当使用数字表示列号时,报错

    Sub 多列删除()

    Set te = ThisWorkbook.Worksheets("示例")

    te.Columns("B:D").Delete Shift:=xlToLeft

    ' te.Range("B:D").Delete Shift:=xlToLeft

    End Sub

    执行效果

    https://img-blog.csdn.net/20170813162651765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemlzaGVuZGlhbnhpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastimg-blog.csdn.net

    列号采用数字报错信息

    https://img-blog.csdn.net/20170813162705022?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemlzaGVuZGlhbnhpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastimg-blog.csdn.net

    Part 3:列号的字母表示

    在某些情况下我们只有列号的数字表示怎么办(例如Match函数结果)​?

    使用Address结合Split函数即可解决该问题

    示例中28列对应的列号为AB

    Sub 列号获取()

    Set te = ThisWorkbook.Worksheets("示例")

    cell_addr = te.Cells(1, 28).Address

    col_name = Split(cell_addr, "$")(1)

    Debug.Print (cell_addr)

    Debug.Print (col_name)

    End Sub

    执行效果

    https://img-blog.csdn.net/20170813162718586?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemlzaGVuZGlhbnhpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastimg-blog.csdn.net

    ————————————————

    版权声明:本文为CSDN博主「Data_Python_VBA」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:CSDN-专业IT技术社区-登录

    展开全文
  • 工作表中一次插入(删除)多行 1、插入多行 在工作表中一次性插入多行,需要使用insert方法,下面针对在第三行位置处插入4行空行为例,介绍三种方法: 循环四次,每次插入一行 通过单元格选中整行进行插入行 直接选中...

    工作表中一次插入(删除)多行

    1、插入多行

    在工作表中一次性插入多行,需要使用insert方法,下面针对在第三行位置处插入4行空行为例,介绍三种方法:

    • 循环四次,每次插入一行
    • 通过单元格选中整行进行插入行
    • 直接选中行进行插入行
    '方法一
    Sub 插入行()
        Dim i As Integer
        For i = 1 To 4
            Sheet1.Rows(3).Insert
        Next
    End Sub
    '方法二
    Sub 插入行1()
        Sheet1.Range("a3").EntireRow.Resize(4).Insert
    End Sub
    '方法三
    Sub 插入行2()
        Sheet1.Rows(3).Resize(4).Insert
    End Sub
    

    2、删除多行

    在工作表中一次性删除多行,需要使用delete方法,下面针对在第三行位置处删除向下的4行空行为例,介绍三种方法:

    • 循环四次,每次删除一行

    • 通过单元格选中整行进行删除行

    • 直接选中行进行删除行

    '方法一
    Sub 删除行()
        Dim i As Integer
        For i = 1 To 4
            Sheet1.Rows(3).Delete
        Next
    End Sub
    '方法二
    Sub 删除行1()
        Sheet1.Range("a3").EntireRow.Resize(4).Delete
    End Sub
    '方法三
    Sub 删除行2()
        Sheet1.Rows(3).Resize(4).Delete
    End Sub
    
    
    展开全文
  • 一次性选中符合条件的单元格 整行删除,本例中使用union方法,注意在循环体中时,因参数是对象,应事先给个具体实例.
  • Excel的多行或者多列删除

    系统:Windows 7
    软件:Excel 2010

    • 这个系列集锦了一些常用功能
    • 今天说说对多行多列的删除操作
    • 重点强调如何表示多行或者多列

    数据源形式
    这里写图片描述

    Part 1:多行删除

    1. 通过RowsRange两种方法都可以
    2. 多行使用行号数字来表示,注意需将行号放入双引号中""
    Sub 多行删除()
        Set te = ThisWorkbook.Worksheets("示例")
        'te.Rows("3:5").Delete Shift:=xlUp
        te.Range("3:5").Delete Shift:=xlUp
    End Sub

    执行效果
    这里写图片描述

    Part 2:多列删除

    1. 通过ColumnsRange两种方法都可以
    2. 列号使用字母表示,注意需将行号放入双引号中""
    3. 当使用数字表示列号时,报错
    Sub 多列删除()
        Set te = ThisWorkbook.Worksheets("示例")
        te.Columns("B:D").Delete Shift:=xlToLeft
    '    te.Range("B:D").Delete Shift:=xlToLeft
    End Sub

    执行效果
    这里写图片描述

    列号采用数字报错信息
    这里写图片描述

    Part 3:列号的字母表示

    1. 在某些情况下我们只有列号的数字表示怎么办(例如Match函数结果)​?
    2. 使用Address结合Split函数即可解决该问题
    3. 示例中28列对应的列号为AB
    Sub 列号获取()
        Set te = ThisWorkbook.Worksheets("示例")
        cell_addr = te.Cells(1, 28).Address
        col_name = Split(cell_addr, "$")(1)
        Debug.Print (cell_addr)
        Debug.Print (col_name)
    End Sub

    执行效果
    这里写图片描述

    以上为本次的学习内容,下回见

    如发现有错误,欢迎留言指出。文章定位:“字典查询类”


    更多原创请关注微信公众号

    扫描二维码,关注公众号
    让重复工作一键化,让时间更有意义
    这里写图片描述

    展开全文
  • ----之后再做更复杂的1.1 需求分析用VBA删除如下内容,解决思路都不同删除1列的空行(本文要做的)删除整个区域内的空行删除整个区域内的空格(这个一般很少有这种需求,用处不大----可用currentregion ....

    d028b028b34d74d0282b04957bf7b6c5.png

    1 要解决的问题:删除某列中的空单元格/空行

    暂时只实现了删除一列中的空行,并没有实现多行的判断空行和删除方法。----之后再做更复杂的

    1.1 需求分析

    用VBA删除如下内容,解决思路都不同

    1. 删除1列的空行(本文要做的)
    2. 删除整个区域内的空行
    3. 删除整个区域内的空格(这个一般很少有这种需求,用处不大----可用currentregion .specialcells()解决)
    4. 下面是原始数据,下面看看如何处理

    b5e432c6e31ae5a69d9e54459414deba.png

    2 如果是删除全表/某区域的空单元格, 直接在当前列删除

    简洁代码:删除区域内所有空单元格 cells ---实际需要少,so用处不大

    使用 sheet.usedrange / region.currentregion .specialcells()

    • 删除,表格页面内使用区域的空格所在的行
    • 局限性就是表格的上方,左边还会存在一些空行空列,不过这个手动删下就可以了
    • 这个只是删除了空的cells 并不是删除了空行
    Sub 删空单元格()
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Delete
    End Sub

    3 如果是删一列的空行

    3.1 代码1:基础代码,假设确认知道这列的长度,关键是倒着删

    • 熟悉 isempty() 或者用 if xxxx=""
    • 删除单元格后,要设置属性 shift:=xlup等
    • 需要倒着删除,否则会因为一边删除行,一遍重新排列有问题
    Sub 删一列的空行()
    For i = 20 To 1 Step -1 '需要倒着删除
    If IsEmpty(Cells(i, 1)) Then
    Cells(i, 1).Delete shift:=xlUp
    End If
    Next i
    End Sub

    3.2 改进版: 先查这一列的非空最大行数

    Sub jackma_delete_row()
    For i = Range("c65536").End(xlUp).Rows To 1 Step -1
    If IsEmpty(Cells(i, 3)) Then
    rows(i).Delete shift:=xlUp
    End If
    Next i
    End Sub

    3.3 也可以不用 isempty() 函数,直接判断 if cells()=""

    • 直接判断 if cells(i,j) =""
    • 这种删除整行不合适 rows(i) .delete,会影响其他列的元素
    Sub ponyma_del_row1()
    For i = Range("c65536").End(xlUp).Row To 1 Step -1
    If Cells(i, 3) = "" Then
    Cells(i, 3).Delete
    ' Rows(i).Delete
    End If
    Next i
    End Sub

    4 不动原数据,将非空数据放到另外一列

    4.1 错误版:

    要明白“写入列”的循环数,明显和“输出列”的循环数 应该不同!
    这么写相当于 输出列 那行为空的时候,只是不往 写入列写,所以没覆盖,也是空的
    Sub jackma_delete_row2()
    For i = 1 To Range("c65536").End(xlUp).Rows
    If Not IsEmpty(Cells(i, 3)) Then
    Cells(i, 9) = Cells(i, 3)
    End If
    Next i
    End Sub

    4.2 正确版: 写入列/输出列,应该是单独的循环变量!

    Sub jackma_delete_row2()
    k = 1
    For i = 1 To Range("c65536").End(xlUp).Rows
    If Not IsEmpty(Cells(i, 3)) Then
    Cells(k, 9) = Cells(i, 3)
    k = k + 1
    End If
    Next i
    End Sub

    5 先写入数组array中,再写到其他地方,据说这样能大幅提高速度!

    把需要的筛选的数据,存在数据,然后从数组写到需要的地方,这是个好习惯

    第1版:局限性很大,没有自动查这列的 元素个数,以及 最大非空行是多少

    Sub 删除空格4()
    Dim arr1() '定义了一个数组,并且是动态数组,因为没指定大小
    ReDim arr1(11) '动态数组,使用前必须重新redim,数组大小
    j = 0 'j=1开始,不会越界,但arr1(0)为空,因为赋值跳过了它
    For i = 1 To 11 Step 1
    If Not IsEmpty(Cells(i, 1)) Then
    arr1(j) = Cells(i, 1)
    j = j + 1
    End If
    Next i
    For j = 0 To UBound(arr1())
    Cells(j + 1, 9) = arr1(j) '单元格得从1开始,arr(),默认得从0开始,但可以改
    Next j
    End Sub

    第2版重写

    注意debug.print用来监测的时候,需要注意,放在循环的位置,尤其是在k=K+1这种变化时,和放在哪个for循环之内外!

    Sub ponyma_array22()
    Dim arr1() '当数组定义,且默认开始的index为0! preserve时需要有0的index
    'dim arr1 当变量定义
    k = 1
    m = 1
    ReDim arr1(0 To Application.WorksheetFunction.CountA(Range("c:c")))
    For i = 1 To Range("c65536").End(xlUp).Row Step 1
    If Cells(i, 3) <> "" Then
    Debug.Print Cells(i, 3)
    arr1(k) = Cells(i, 3)
    Debug.Print arr1(k)
    k = k + 1
    ' Debug.Print arr1(k),写在这里问题1:k已经变了,下一个k还没赋值为空,2最后的k越界
    ' 循环是很精巧的,放的地方很讲究,放得不对,就错误百出
    ' Debug.Print arr1(k) 如果放在k=K+1 后,就看起来没打印出东西,因为都打印的arr1的空元素
    End If
    Next i
    For j = 1 To UBound(arr1(), 1)
    Cells(m, 10) = arr1(j)
    m = m + 1
    Next j
    End Sub

    第3版

    Option Explicit
    Sub ponyma1()
    Dim arr1()
    Dim k1, k2, k
    Dim i, j
    k1 = WorksheetFunction.CountA(Range("a:a"))
    k2 = Range("a65536").End(xlUp).Row
    Debug.Print "这列非空数据个数k1=" & k1
    Debug.Print "这列最后1个有数据的行数k2=" & k2
    'arr1(0) = 1
    'ReDim Preserve arr1(1, k)
    '这样会越界,因为你需要preserve数据。但是index系不符合
    '但是,如果不preserve 就无所谓
    '或者虽然 dim arr1() 是动态数据从index0开始,但是arr1()一直为空,preserve也不会出现index越界问题
    ReDim Preserve arr1(1 To k1)
    'ReDim Preserve arr1(1, k1) 这样就会越界。。。因为语法是2维数组了!
    'ReDim Preserve arr1(1 to k1) 这样就对的
    k = 1
    For i = 1 To k2
    If Cells(i, 1) <> "" Then
    arr1(k) = Cells(i, 1)
    Debug.Print arr1(k)
    k = k + 1
    End If
    Next i

    ————————————————

    版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:【原创】VBA(实验1)用VBA 删除某列空单元格的3种方法:删除法,转移到其他列方法,数组方法

    展开全文
  • VBA删除如下内容,解决思路都不同 删除1列的空行(本文要做的) 删除整个区域内的空行 删除整个区域内的空格(这个一般很少有这种需求,用处不大----可用currentregion .specialcells()解决) 下...
  • ----之后再做更复杂的1.1 需求分析用VBA删除如下内容,解决思路都不同删除1列的空行(本文要做的)删除整个区域内的空行删除整个区域内的空格(这个一般很少有这种需求,用处不大----可用currentregion ....
  • 大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,NO.136-NO.138,内容是:插入多行表格的方法、如何删除工作表中的空白行、删除重复数据行等内容。VBA过程代码136:如何在工作表中一次插入多行...
  • 大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,NO.136-NO.138,内容是:插入多行表格的方法、如何删除工作表中的空白行、删除重复数据行等内容。VBA过程代码136:如何在工作表中一次插入多行...
  • 今天我们内容主要通过讲解'Range.EntireRow(返回行),Range.EntireColumn(返回列)两个属性,定位单元格具体位置,并根据位置删除所在区域。▼Range.EntireRow属性▼1、Range.EntireRow 属性:返回一个 Range 对象,...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧30 工作表中一次插入多行 12 技巧31 删除工作表中的空行 12 技巧32 删除工作表的重复行 12 技巧33 定位删除特定内容所在的行 12 技巧34 判断是否选中整行 12 技巧35 限制工作表的滚动区域 12 技巧36 复制自动...
  • CAD_VBA开发手册

    热门讨论 2008-12-06 17:57:59
    删除对象 比例缩放对象 转换对象 延伸和修剪对象 分解对象 编辑多段线 编辑样条曲线 编辑阴影 使用图层、颜色和线型 使用图层 使用颜色 使用线型 分配图层、颜色和线型给对象 添加文本到图形中 处理...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧30 工作表中一次插入多行 83 技巧31 删除工作表中的空行 84 技巧32 删除工作表的重复行 86 技巧33 定位删除特定内容所在的行 88 技巧34 判断是否选中整行 89 技巧35 限制工作表的滚动区域 90 技巧36 复制自动...
  • Excel VBA技巧实例手册

    2016-07-28 22:29:39
    第1篇 ExcelVBA基础 第1章 了解Excel宏 1.1 创建宏 技巧001显示“开发工具”选项卡 技巧002录制第一个宏 技巧003在VBE中创建宏 1.2 管理宏 技巧004运行宏 技巧005编辑宏 技巧006保存宏 技巧007设置宏的安全性 第2...
  • 04186删除多行或多列 04187删除工作表的全部单元格 04188移动单元格 04189复制单元格(复制全部内容) 04190复制单元格的值(PasteSpecial方法) 04191复制单元格的值(Value属性) 04192复制单元格的数据和公式...
  • 虽然一下方法可以实现,但是安装 Visual_Assist_X_10.7.1925.0 后可以自动实现这些功能,而且感知比较好,建议使用助手工具而不是以下的方法。 Tools-->Macro-->...'多行注释Sub Comment()if Docu...
  • 今天的文章简单粗暴,分享5个多行多列提不重复值技巧,总有一个是你想不到的!下面要把左边的表提取出不重复值1、操作才是王道想一想,如果数据都在一列,那该多好,直接使用删除重复项就能实现提取不重复值。现在...
  • VBA宏 可以读写文件中的宏,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加宏 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本...
  • VBA宏 可以读写文件中的宏,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加宏 导入及导出 从下列导入数据… •Open Office Calc文档 •CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的...
  • xlsreadwriteII 4.0.0.52

    2011-06-27 09:31:15
    VBA宏 可以读写文件中的宏,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加宏 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本...
  • Excel百宝箱9.0无限制破解版

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

    2012-10-27 17:09:21
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • 删除空白单元格所在行】:输入1则删除空白行(整行空白),输入2则删除空白单元格所在行 【筛选唯一值】:以选择区域左边一列为条件进行唯一值筛选,输入1则删除重复值所在行,输入2则隐藏重复值所在行 【相同...
  • 删除空白单元格所在行】:输入1则删除空白行(整行空白),输入2则删除空白单元格所在行 【筛选唯一值】:以选择区域左边一列为条件进行唯一值筛选,输入1则删除重复值所在行,输入2则隐藏重复值所在行 【相同项与...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
    4.7.4 创建一个多行分类坐标轴/109 4.7.5 添加和删除坐标轴/110 4.7.6 坐标轴数字格式/110 4.8 处理网格线/111 4.9 处理数据标签/113 4.9.1 添加或删除数据标签/113 4.9.2 编辑数据标签/113 4.9.3 数据标签的一些...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    4.7.4 创建一个多行分类坐标轴/109 4.7.5 添加和删除坐标轴/110 4.7.6 坐标轴数字格式/110 4.8 处理网格线/111 4.9 处理数据标签/113 4.9.1 添加或删除数据标签/113 4.9.2 编辑数据标签/113 4.9.3 数据标签的一些...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    【生成系统图标】【获取内置命令】【修复Excel】【破解VBA密码】【删除空单元格】【转置选区】【按列倒置】【按列倒置】【字母大小写转换】【小写金额转大写】【大写金额转小写】【区域数据加密】【多区域复制】【按...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

vba删除多行