ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 再次修改需求,对单元格整体字体颜色判断:红或黑2种情况(排除数字和标点的颜色)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-26 09:34 | 显示全部楼层 |阅读模式
本帖最后由 qlmgu 于 2023-2-28 12:07 编辑


再次感谢出手相助和关注的老师,各位的程序可以应用到精确的颜色判断。顺告,我已经找到可以整体判断单元格颜色三种状态(black,red,mixed)的程序,且运行速度很快。再次感谢各位。

原来提出一个求助方案,得到多位老师出手相助。因为样本的文字太多,程序判断结果都很准确,但就是判断字体颜色的时间太长太长。现修改求助方案,希望继续得到老师们的指点和帮助。原方案给各位老师增加麻烦了,请原谅。

根据前面老师的建议:不需要对具体字色进行判断,只需要对整个单元格的颜色进行判断,如果不是黑色或红色,就可以写混合色,而不需要对所有文字颜色进行逐个判断。万一需要逐个词判断是否混合色,就直接留空,不判断也可以:留空默认为混合色,因为我的文件只有这三种情况,没有其他颜色了。希望这样速度可以快些,使程序在准确判断的情况下,可以缩短运行时间。--原谅我太啰嗦了,因为原来是我的需求不符合程序要求。谢谢各位。


数据排放如下:
A列为文本的编号;B列为测试文本,其中部分字体颜色是红色;3.对具体行的二种情况进行总体判断(即黑色或红色),而不需要对具体字色进行判断,也不需要统计red数。如果不是黑色和红色就默认为混合。判断结果返回到C列:黑色,红色或留空。希望对标点符号和数字的颜色进行排除,即不判断这些字符的颜色

附件的程序速度较快,就是返回结果和行号序号需要调整。再次感谢各位老师。



不判断混合色也可以.png

判断字体颜色忽略标点数字再求助.rar (18.73 KB, 下载次数: 8)








TA的精华主题

TA的得分主题

发表于 2023-2-26 10:04 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-26 10:21 | 显示全部楼层
追风少年丶斌 发表于 2023-2-26 10:04
多循环判断几次就行了

感谢追风少年丶斌老师回复。可以请你出手设计程序吗,谢谢

TA的精华主题

TA的得分主题

发表于 2023-2-26 10:58 来自手机 | 显示全部楼层
Sub JudgeColor()
    Dim rng As Range
    Dim i As Long
    Dim j As Long
    Dim strColor As String
    Dim blnRed As Boolean
    Dim blnBlack As Boolean
    Set rng = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
    For i = 1 To rng.Rows.Count
        blnRed = False
        blnBlack = False
        For j = 1 To Len(rng.Cells(i, 1).Value)
            strColor = rng.Cells(i, 1).Characters(j, 1).Font.Color
            If strColor = vbRed Then
                blnRed = True
            ElseIf strColor = vbBlack Then
                blnBlack = True
            End If
        Next j
        If blnRed And blnBlack Then
            rng.Cells(i, 3).Value = "混合色"
        ElseIf blnRed Then
            rng.Cells(i, 3).Value = "红色"
        ElseIf blnBlack Then
            rng.Cells(i, 3).Value = "黑色"
        End If
    Next i
End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-26 11:00 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-26 11:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-26 14:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
追风少年丶斌 发表于 2023-2-26 10:58
Sub JudgeColor()
    Dim rng As Range
    Dim i As Long

反馈老师:我在测试程序,由于我的文本字数太多(单元格最多字为500,最少字为4个,平均129字多,4000到5000个单元格),程序还在运行中。

TA的精华主题

TA的得分主题

发表于 2023-2-26 14:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 阿白124 于 2023-2-26 14:38 编辑

给你个思路 把标点符号去掉,整体判单单元格字体颜色,全是红色或者黑色可以得到具体颜色,混合色为null,这样可以快速得到单元格颜色结果,如果需要具体统计字数,也可以用同样方法使用二分法加快程序速度。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-26 14:42 | 显示全部楼层
阿白124 发表于 2023-2-26 14:37
给你个思路 把标点符号去掉,整体判单单元格字体颜色,全是红色或者黑色可以得到具体颜色,混合色为null, ...

感谢阿白124老师的回复和建议。我遇到程序时间太长就是这样处理的,去掉标点符号和数字,就是因为看到附件里的那个程序很快可以判断3种情况,我才再次来求助的。可能是我的需求不合理了。谢谢您。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-26 14:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 qlmgu 于 2023-2-26 14:56 编辑
阿白124 发表于 2023-2-26 14:37
给你个思路 把标点符号去掉,整体判单单元格字体颜色,全是红色或者黑色可以得到具体颜色,混合色为null, ...

您的建议很好,我不需要统计字数,能否请您直接出手相助,感谢您。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 22:40 , Processed in 0.033668 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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