ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

   
高效办公必会的Office实战技巧 永久免费,网表让Excel秒变数据库 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! 国内首部Excel函数公式学习大典 职场充电黑科技, Office微视频教程 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 突破Excel限制,用活字格提高效率 12门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 390|回复: 14

[求助] 小白求助两个关于删除列和行的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-21 18:51 | 显示全部楼层 |阅读模式
请高手指导学习,谢谢!

1.删除某列中空白单元格的整行。
例如,执行代码后-->跳窗口提示选择哪列-->例如附件我选择H列-->H列的空白单元格是H2和H8-->删除第2行整行和删除第8行整行-->提示结束;
           如果没有空白单元格则提示“无空白单元格”则结束。
QQ截图20170421184922.png

2.删除某行中空白单元格的整列。
例如,执行代码后-->跳窗口提示选择哪行-->例如附件我选择第6行-->第6行的空白单元格是B6和H6-->删除B列整列和删除H列整列-->提示结束;
           如果没有空白单元格则提示“无空白单元格”则结束。

QQ截图20.png

000.zip (7.04 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2017-4-21 19:19 | 显示全部楼层
本帖最后由 活在理想的世界 于 2017-4-21 19:43 编辑
  1. Sub R()
  2. Dim I, K, C As Integer, N As Worksheet
  3. Set N = ActiveSheet
  4. K = N.Range("A10000").End(3).Row
  5. C = InputBox("请选择基准列")
  6. For I = K To 1 Step -1
  7.     If N.Cells(I, C) = "" Then
  8.         N.Cells(I, C).EntireRow.Delete
  9.     End If
  10. Next
  11. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-4-21 19:27 | 显示全部楼层
本帖最后由 活在理想的世界 于 2017-4-21 19:48 编辑
  1. Sub C()
  2. Dim I, K As Integer, N As Worksheet, R As Integer
  3. Set N = ActiveSheet
  4. R = InputBox("请选择基准行")
  5. K = N.Range("XFD" & R).End(xlToLeft).Column
  6. For I = K To 1 Step -1
  7.     If N.Cells(R, I) = "" Then
  8.         N.Cells(R, I).EntireColumn.Delete
  9.     End If
  10. Next
  11. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-4-21 19:29 | 显示全部楼层

兄弟,你这样删法会漏删的。
当两连续两行为空时,必有一行被漏删。

TA的精华主题

TA的得分主题

发表于 2017-4-21 19:35 | 显示全部楼层
maditate 发表于 2017-4-21 19:29
兄弟,你这样删法会漏删的。
当两连续两行为空时,必有一行被漏删。

是有问题

只能倒着删吗?有其他办法吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-21 23:12 | 显示全部楼层
本帖最后由 305117 于 2017-4-21 23:18 编辑
活在理想的世界 发表于 2017-4-21 19:35
是有问题

只能倒着删吗?有其他办法吗?

非常感謝!學習了,
您後來更新了代碼?

R跳出的InputBox輸列數的數字.
C跳出的InputBox輸行數的數字.

TA的精华主题

TA的得分主题

发表于 2017-4-22 09:40 | 显示全部楼层
305117 发表于 2017-4-21 23:12
非常感謝!學習了,
您後來更新了代碼?

改过代码,我之前使用FOR EACH 循环做的,后来有网友提醒说FOR EACH 循环可能发生漏删我改成了FOR 循环。

现在看来只能用FOR循环了,而且只能倒着删,否则不论是FOR 循环还是FOR EACH 循环都有可能发生漏删情况。

TA的精华主题

TA的得分主题

发表于 2017-4-22 09:42 | 显示全部楼层
305117 发表于 2017-4-21 23:12
非常感謝!學習了,
您後來更新了代碼?

还有可以用筛选法删空行,空列就只能用for循环倒着删了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-23 06:24 来自手机 | 显示全部楼层
活在理想的世界 发表于 2017-4-22 09:42
还有可以用筛选法删空行,空列就只能用for循环倒着删了。

我用F5(Ctrl+G)定位器,定位空白单元格后在执行删除行或者列。

用这个思路可以有代码吗,谢谢

评分

参与人数 1鲜花 +2 收起 理由
活在理想的世界 + 2 这个思路让我有了豁然开朗的感觉,使用VBA.

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-23 08:43 | 显示全部楼层
305117 发表于 2017-4-23 06:24
我用F5(Ctrl+G)定位器,定位空白单元格后在执行删除行或者列。

用这个思路可以有代码吗,谢谢

好思路,我都没想到还有这样的玩儿法,你提醒我了,我还要感谢你。。

先给你个删空行的代码,用F5思路完成的。。。。

  1. Sub 删空行()
  2. Dim N As Worksheet, C As Integer, STR As String
  3. C = InputBox("选择基准列")
  4. Set N = ActiveSheet
  5. STR = Chr(64 + C)
  6.     N.Columns(STR & ":" & STR).Select
  7.     Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  8. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册 新浪微博登陆

本版积分规则

关闭

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

关注官方微信,每天坐享新鲜教程

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

GMT+8, 2017-9-21 20:16 , Processed in 0.116193 second(s), 22 queries , Gzip On, MemCache On.

Powered by Discuz! X3.3

© 2001-2017 Wooffice Inc.

   

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

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

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