Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1134|回复: 7

[已解决]求助,代码无效

[复制链接]
发表于 2021-12-14 23:15 | 显示全部楼层 |阅读模式
本帖最后由 快乐的键盘 于 2021-12-15 20:04 编辑

菜鸟百度初学,现有一数据表里有3000多行数据,以I列中内容以颜色区分,红色保留该行,黑色则删除此行。
代码运行没有错误提示,但是没能删除不需要的行,请求前辈帮助,谢谢大家!



Sub text()
Dim EndH, i As Long
EndH = Range("e65536").End(xlUp).Row
For i = EndH To 1 Step -1
If Cells(i, "I").Font.ColorIndex = 1 Then
Range("I" & i).EntireRow.Delete
End If
Next
MsgBox "已删除I列包含红色字符的行!"
End Sub



补上附件
最佳答案
2021-12-16 08:03
本帖最后由 vitrel 于 2021-12-16 08:06 编辑

我也测试了,与5楼版主得到相同的效果。
楼主在1楼的代码确实已经能达到楼主想要的效果。
硬要在鸡蛋里挑骨头的话,也只能在“e65536”以及“连首行也删除”这两处挑了,(其实这两处也没错,只是稍不合理而已)
优化后的代码如下(仅供参考):
  1. Sub text()
  2.     Dim i As Long
  3.     For i = Range("i65536").End(xlUp).Row To 2 Step -1
  4.         If Cells(i, "I").Font.ColorIndex = 1 Then Rows(i).Delete
  5.     Next
  6.     MsgBox "已删除I列包含黑色字符的行!"
  7. End Sub
复制代码


数据.zip

186.14 KB, 下载次数: 4

发表于 2021-12-15 08:02 | 显示全部楼层
楼主,您好!
因为没有附件,我只能就代码进行分析了。
问题1:代码中的e65536说明总行数的依据是E列,为何不是I列呢?如果是I列,应该是i5536才对啊。
问题2:说明中,要删除的是黑色字的行。ColorIndex = 1对应的也是黑色,但为何MsgBox说的却是红色?
问题3:就算您真想删除的是黑色,ColorIndex = 1对应的是黑色没错了,但那文字真是黑色?而不是跟黑色很像的颜色?这一点不得不防。
因没有附件,我只能分析到这里了。
回复

使用道具 举报

发表于 2021-12-15 09:33 | 显示全部楼层
本帖最后由 林木水 于 2021-12-15 09:37 编辑

真相只有一个1.e列end(xlup)是第一行,把e改成i列
2.或者你条件是填充颜色是红色,而你判断条件趋势font字体,需要把font改成interior
3.假设你所需要改的表是sheet1,而你代码却在sheet2里面是识别不了的,需要放sheet1或者创建模块里面去编写,并且激活索要改的sheet
提问,请放附件,或者截图说明清楚,才好针对性的判断

回复

使用道具 举报

 楼主| 发表于 2021-12-15 19:01 | 显示全部楼层
本帖最后由 快乐的键盘 于 2021-12-15 19:02 编辑

感谢两位老师回答,新手刚开始起步学习,还是不太明白,现在补上附件,还请帮忙看看,谢谢!!要删除I列中黑色文字内容的行,保留红色的行。

数据.zip

186.14 KB, 下载次数: 2

回复

使用道具 举报

发表于 2021-12-15 21:40 | 显示全部楼层
快乐的键盘 发表于 2021-12-15 19:01
感谢两位老师回答,新手刚开始起步学习,还是不太明白,现在补上附件,还请帮忙看看,谢谢!!要删除I列中 ...

我运行了。可以实现你想要的效果。
回复

使用道具 举报

发表于 2021-12-16 08:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 vitrel 于 2021-12-16 08:06 编辑

我也测试了,与5楼版主得到相同的效果。
楼主在1楼的代码确实已经能达到楼主想要的效果。
硬要在鸡蛋里挑骨头的话,也只能在“e65536”以及“连首行也删除”这两处挑了,(其实这两处也没错,只是稍不合理而已)
优化后的代码如下(仅供参考):
  1. Sub text()
  2.     Dim i As Long
  3.     For i = Range("i65536").End(xlUp).Row To 2 Step -1
  4.         If Cells(i, "I").Font.ColorIndex = 1 Then Rows(i).Delete
  5.     Next
  6.     MsgBox "已删除I列包含黑色字符的行!"
  7. End Sub
复制代码


评分

参与人数 1学分 +2 收起 理由
大灰狼1976 + 2 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-12-16 09:59 | 显示全部楼层
感谢大家帮忙!!

向您们学习!
回复

使用道具 举报

 楼主| 发表于 2021-12-16 10:09 | 显示全部楼层
心正意诚身修 发表于 2021-12-15 21:40
我运行了。可以实现你想要的效果。

感谢版主,小白初学,还请多多关照!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-5 19:18 , Processed in 0.298564 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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