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 ...
随机推荐
- 1.总结---tr()和QTextCodec对象
1. 关于Qt 中的tr()函数-------http://tscsh.blog.163.com/blog/static/200320103201310213312518/ 在论坛中漂,经常遇到有人遇 ...
- iOS开发HTTPS实现之信任SSL证书和自签名证书
iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字 ...
- Spark系列—01 Spark集群的安装
一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的Ma ...
- elasticsearch-查询的基本语法
elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...
- Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1
Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1[转] 1.一般来说MySQL(小于5.5.3)字符集设置为 ...
- 【BZOJ】【3522】【POI2014】Hotel
暴力/树形DP 要求在树上找出等距三点,求方案数,那么用类似Free Tour2那样的合并方法,可以写出: f[i][j]表示以 i 为根的子树中,距离 i 为 j 的点有多少个: g[i][j]表示 ...
- 用fscanf()从文件取数据时,如何判断文件结束
例子:从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中.再从该文件中读入这些数据,将其中小写字母转换成大写字母后再显示屏上输出. 有两种方法 1.使用feof()函数 #inclu ...
- Web流程
Web阻塞加载,异步加载. 延迟执行,立即执行. 加载并执行,不要调用代码. 加载并执行时会调用代码,但是加载并执行时不要调用代码,否则会改变逻辑. 上面是Web流程,JS只是web的一部分.如果关注 ...
- ObjectStore onFetch方法获取记录总数
转自:http://blog.csdn.net/earthhour/article/details/38686029 ObjectStore onFetch方法获取记录总数 require(['doj ...
- js返回上一页报网页过期问题解决
1.detail详细页面加上返回按钮,返回到list列表页 <input type="button" value=" 返回 " onclick=" ...