ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1784|回复: 8

[已解决] 求助删除单元格指定行,求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-10 16:03 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

各位大大,我现在做产品的BOM需要删除单元格,每个表格特定的6、7、9、10、16、17行。表格有好几百多个,我手动删除不知道要多久,求助!~~~~~~~~~~先谢谢各位了。在线等..........
删除白色部分
01.jpg

TA的精华主题

TA的得分主题

发表于 2012-12-10 16:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
做个模板。录制个宏?
我能想到的就是这个。

TA的精华主题

TA的得分主题

发表于 2012-12-10 16:11 | 显示全部楼层
楼主是07版本及以上的可以用筛选试试!

TA的精华主题

TA的得分主题

发表于 2012-12-10 16:32 | 显示全部楼层
本帖最后由 时光鸟 于 2012-12-10 16:43 编辑

一个工作薄有几百个工作表???
可以写个VBA来批量删除6、7、9、10、16、17行。
但是如果你没有特定内容作为判断的话,这样做有个弊病,如果不小心重复执行的话就会误删有用的数据

TA的精华主题

TA的得分主题

发表于 2012-12-10 16:50 | 显示全部楼层
时光鸟 发表于 2012-12-10 16:32
一个工作薄有几百个工作表???
可以写个VBA来批量删除6、7、9、10、16、17行。
但是如果你没有特定内容 ...

如果是同一个工作薄的话反而好弄了,直接选择所有sheet,删除特定的行就行了。

TA的精华主题

TA的得分主题

发表于 2012-12-10 17:16 | 显示全部楼层
传说中的男子 发表于 2012-12-10 16:50
如果是同一个工作薄的话反而好弄了,直接选择所有sheet,删除特定的行就行了。

多个工作薄的话,问题也不太大,可能整个操作的时间稍长一点~
最怕就是多次操作数据误删,我最关心的是这个要删的行就没有特征数据。

TA的精华主题

TA的得分主题

发表于 2012-12-10 21:17 | 显示全部楼层
本帖最后由 时光鸟 于 2012-12-14 14:20 编辑

给你写了个VBA,批量删除第6, 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点:
1)该代码只用来批量删除代码所在文件目录下.xls* 后缀匹配的所有工作薄l的所有工作表的第6, 7, 9, 10, 12, 13, 15, 16行
2)该批量删除操作不可逆转,请注意备份
3)请确保每个工作薄的每个工作表删除的行都相同,且每个工作表只能执行一次,若执行多次会造成误删

  1. Public Sub test()
  2. On Error Resume Next
  3. Dim arrNa(1 To 2000) '定义当前目录下工作薄名称,根据文件量自行修改
  4. Dim fileNa, thisNa, sheetNum '定义工作薄名称变量,当前工作薄名称变量,当前工作薄的工作表数量
  5. Dim n, i, ii, iii  '定义遍历参数
  6. arrDel = [{6, 7, 9, 10, 12, 13, 15, 16}] '定义要删除的行号,升序排列
  7. Application.DisplayAlerts = False  '关闭工作薄修改后退出时的提示保存等信息,默认保存
  8. Set obj = CreateObject("scripting.FileSystemObject")
  9. For Each fileNa In obj.GetFolder(ThisWorkbook.Path).Files
  10.   If fileNa Like "*.xls*" Then
  11.     n = n + 1: arrNa(n) = fileNa  '取出当前目录下符合条件的工作薄的名称存到arrNa数组中
  12.   End If
  13. Next
  14. For i = 1 To n
  15.     With CreateObject(arrNa(i)) '遍历所有工作薄
  16.     thisNa = .Name              '当前工作薄名称
  17.     If thisNa = "批量删除当前目录下所有工作薄的所有工作表的指定行.xlsm" Then GoTo reg1
  18.     sheetNum = .Worksheets.Count '当前工作薄中工作表的数量
  19.     For ii = 1 To sheetNum
  20.     With .Worksheets(ii)        '遍历当前工作薄所有工作表
  21.           For iii = UBound(arrDel) To 1 Step -1 '从下到上删除
  22.           .Rows(arrDel(iii)).EntireRow.Delete shift:=xlUp '遍历删除当前工作薄当前工作表下指定行
  23.           Next iii
  24.     Windows(thisNa).Visible = True '程序执行过程中,当前工作薄可见
  25.     End With
  26.     Next ii
  27.     .Close True  '当前工作薄完成后关闭
  28.     End With
  29. reg1:
  30. Next i
  31. Application.DisplayAlerts = True  '恢复工作操作后的系统提示信息
  32. End Sub
复制代码



评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-14 10:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
时光鸟 发表于 2012-12-10 21:17
给你写了个VBA,批量删除第6, 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点 ...

厉害,小弟谢过了!

TA的精华主题

TA的得分主题

发表于 2019-11-4 22:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
时光鸟 发表于 2012-12-10 21:17
给你写了个VBA,批量删除第6, 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点 ...

我想问问,这个是删除指定行的  我如果想添加指定行,怎么操作?比如我要添加第一行
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 09:32 , Processed in 0.048704 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表