VBA高效删除不连续多行
最近在搞VBA,在感叹Excel功能强大的同时,对于新接触的一门编程语言也很烦恼。很多基础的语法都要靠网上搜索。现总结一些学习到的心得。
VBA高效删除不连续多行
在一个拥有几万条数据的Excel中,若要删除其中其些行数据,并且这些行是不连续的。那么用for循环遍历、判断后一条一条的删除的效率是很低的。那么有什么方法可以在1秒级别的时间里删除这些行呢?
大致思路是先将这些行连续起来,再批量删除。
可以借用一列数据进行辅助。for循环判断出将要删除的行,在辅助列的位置设置一个标志位,如“1”。再将这列排序,最后删除。代码如下:
Dim rowBegin As Integer
Dim rowMax As Integer
rowBegin =
rowMax = ActiveSheet.UsedRange.Rows.count
'省略设置标志位的代码
'借用Z列辅助 '排序
Range("A" & rowBegin & ":Z" & rowMax).Sort key1:=Range("Z" & rowBegin), order1:=xlAscending, header:=xlNo
'删除
If [Z65536].End(xlUp).row >= rowBegin Then
Rows(rowBegin & ":" & [Z65536].End(xlUp).row).Delete
End If
4万条数据中删除2万条数据大概用时1秒。
另,总结一些遇到过的问题。
给单元格加锁时,提示“不能设置类Range的Locked属性”
ActiveSheet.Range("B:B").Locked = True '给第二列加锁
可能由两个原因造成:
1.加锁范围中的某部分已经有锁(如已经将第一行加锁),这样在加锁前要先解除锁定。
ActiveSheet.Unprotect ("password")
2.加锁的部分与未加锁的部分有合并单元格(如A1与B1是合并单元格)。
VBA高效删除不连续多行的更多相关文章
- CListCtrl中删除多个不连续的行
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 实现HBase增量入库(HBase删除自定义时间戳行数据)
目录 1. 背景描述 2. 问题描述 3. 解决方案 1. 背景描述 目前在做音乐推荐项目,前期做排序模型优化,任务是使用模型对用户的历史音乐进行排序,有6800多万个用户,约40G的用户数据,使用H ...
- 删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误,即DeletedRowInaccessibleException
删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误 =========================================================== 采 ...
- 手把手教你打造高效的 Kubernetes 命令行终端
Kubernetes 作为云原生时代的操作系统,熟悉和使用它是每名用户的必备技能.本文将介绍一些提高操作 Kubernetes 效率的技巧以及如何打造一个高效的 Kubernetes 命令行终端的方法 ...
- sed 删除最后几行 和删除指定行 awk使用
sed 删除最后几行 和删除指定行 转载原文链接:http://blog.51cto.com/lspgyy/1305489 sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的. 删 ...
- Linux下如何高效删除一个几十G的文本文件的最后一行或几行
当我们在服务器端记录日志或文本数据时,有时候会有需要删除一个大文件的最后几行,这时如何才能高效实现. 上网浏览终于找到dd命令,亲测如下,删除一个32GB的日志文件最后100行仅需要4分钟 [root ...
- Linux——高效玩转命令行
[0]统计文件or压缩文件的行数 zcat file.gz | sed -n '$=' #迅速.直接打印出多少行.-n 取消默认的输出,使用安静(silent)模式 '$=' 不知道是什么 ...
- Matlab Delete Row or Col 删除矩阵的行或列
Matlab中,我们有时候要删除矩阵中的某行某列,可以采用下列方法进行删除: a = [ ]; a(,:) = []; % Delete row a(:,) = []; % Delete col
- jQuery如何动态添加具有删除按钮的行
代码实例如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta ...
随机推荐
- MYSQL procedure
没怎么接触过mysql procedure,今天建个calendar表还磨磨唧唧的,记录一下: CREATE PROCEDURE `new_procedure` (start_date DATA,en ...
- Json.Net使用JSON Schema验证JSON格式【实例】
给出一个Json,验证其格式是否符合规则. { "coord": { //对象 "lon": 145.77, "lat": -16.92 } ...
- 关于VS2010error RC2170 : bitmap file res\tmp1.bmp is not in 3.00 format
我们有时候向VS中的程序插入图片,会出现如下错误: 这是VS的一个bug,对于不能识别的资源,添加的时候,VS会弹出一个对话框让你填类型,这个类型其实是字符串表示,而不是像内置类型,例如整数. 解 ...
- 我给女朋友讲编程html系列(2) --Html标题标签h1
Html是一门标签语言,因此学习Html最快的方式就是学习使用html标签. html标题标签:h1,h2,h3,h4,h5,h6 标题标签总共有6个,h1,h2,h3,h4,h5,h6,从h1到h6 ...
- html5 drag api详解
可以夸张点说,如果你不会拖拽,你不是一个合格的前端开发. 回想下,以前我们是怎么实现拖拽的,主要有以下几步: 1.目标元素绑定mousedown事件,记录下此时鼠标位置和拖拽元素的位置差,分别是 di ...
- 802.11 wireless 四
802.11 wireless 4spread spectrum(扩频 - 基于香农定理的算法)1.窄带和扩频是发送信号的两种不同方式2.扩频技术使用更小的能量在波峰3.带宽的需要,基于发送数据的量频 ...
- 设计模式之组合模式(Composite)
组合模式原理:组合模式的作用是讲继承同一父类的不同子类对象组合起来,形成一个树形的结构,例如公司的部门组织 代码如下 #include <iostream> #include <st ...
- Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- JAVA数据结构系列 栈
java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为 ...
- UIView的frame和bounds的含义
1.frame是该view相对于父view的坐标系中的位置和大小.(参照点是父view的坐标系) 2.bounds是该view相对于自己的坐标.(参照点是本身坐标系统) 3.uiresponder&l ...