ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 提取A例标红的文字同时A例有包含B例的词根全部自动标红

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-18 12:34 | 显示全部楼层 |阅读模式
本帖最后由 吴虾咪 于 2024-8-18 16:30 编辑

提取A例标红的文字同时A例有包含B例的词根全部自动标红.rar (63.56 KB, 下载次数: 7) 123149.jpg


这下有老师弄的,词根在Sheet2,A例里面,不知道啥改成到本表B例里面来。


Sub 飘红()
Dim arr, s&, ss&, i&, j&
arr = Sheet2.Range("A1:A" & Sheet2.Cells(Rows.Count, "A").End(xlUp).Row) '   标红(Sheet2.Range)表格及位置
    With Sheet3
        For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
            For j = 1 To UBound(arr)
                s = InStr(1, .Cells(i, 1).Value, arr(j, 1))
                ss = InStr(s + Len(arr(j, 1)), .Cells(i, 1).Value, arr(j, 1))
                If s > 0 Then
                    With .Cells(i, 1).Characters(s, Len(arr(j, 1))).Font
                        .Color = vbRed
                        .Bold = True
                    End With
                End If
                If ss > 0 Then
                    With .Cells(i, 1).Characters(ss, Len(arr(j, 1))).Font
                        .Color = vbBlue
                        .Bold = True
                    End With
                End If
            Next
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2024-8-18 16:00 | 显示全部楼层
参与一下,仅供参考。。。
image.png
image.png

提取A例标红的文字同时A例有包含B例的词根全部自动标红.zip

163.03 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-18 16:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码如下。。。
Sub 提取红色文字词根()
    Dim ws As Worksheet
    Set ws = ActiveSheet
      
    Dim cell As Range
    Dim targetColor As Long
    Dim i As Integer
    Dim char As String
    Dim coloredText As String
      
    ' 设置目标颜色为红色,使用RGB函数
    targetColor = RGB(255, 0, 0)
      
    ' 遍历A列的每个单元格
    For Each cell In ws.Range("A3:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
        coloredText = "" ' 初始化coloredText为空字符串
         
        ' 遍历单元格中的每个字符
        For i = 1 To Len(cell.Value)
            char = Mid(cell.Value, i, 1)
              
            ' 检查字符的颜色是否为红色
            If cell.Characters(i, 1).Font.Color = targetColor Then
                coloredText = coloredText & char
            End If
        Next i
         
        ' 将提取的有颜色的文字放置到B列的对应单元格中
        cell.Offset(0, 1).Value = coloredText
    Next cell
   
    Set d = CreateObject("scripting.dictionary")
    For Each cell In ws.Range("b3:b" & ws.Cells(ws.Rows.Count, "b").End(xlUp).Row)
        If Len(cell.Value) <> 0 Then d(cell.Value) = ""
    Next
    Key = d.keys
    For Each cell In ws.Range("A3:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
        ' 遍历单元格中的每个字符
        For i = 0 To UBound(Key)
            x = InStr(cell.Value, Key(i))
            If x Then
                cell.Characters(x, Len(Key(i))).Font.Color = targetColor
            End If
        Next i
    Next cell

End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 16:30 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 16:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
quqiyuan 发表于 2024-8-18 16:00
代码如下。。。
Sub 提取红色文字词根()
    Dim ws As Worksheet

老师,像删除颜色行,他是删一行的,有没有办法就删标红的格,不删行,删行就把提取后的词根格一起给删掉了。

TA的精华主题

TA的得分主题

发表于 2024-8-18 17:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
吴虾咪 发表于 2024-8-18 16:42
老师,像删除颜色行,他是删一行的,有没有办法就删标红的格,不删行,删行就把提取后的词根格一起给删掉 ...

删除单元格内容,还是删除单元格,然后下面的单元格往上?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 17:40 | 显示全部楼层
quqiyuan 发表于 2024-8-18 17:23
删除单元格内容,还是删除单元格,然后下面的单元格往上?

含有标红的单元格。是的往上

TA的精华主题

TA的得分主题

发表于 2024-8-18 17:54 | 显示全部楼层
吴虾咪 发表于 2024-8-18 17:40
含有标红的单元格。是的往上

供你参考。。。
image.png

提取A例标红的文字同时A例有包含B例的词根全部自动标红 (2).zip

95.84 KB, 下载次数: 7

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-18 17:56 | 显示全部楼层
代码如下。。。
Sub 删除颜色单元格()
    Dim i&
    Dim Rng As Range
    With Sheet3
    For i = .Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
        For j = 1 To Len(.Cells(i, 1).Value)
            char = Mid(.Cells(i, 1).Value, j, 1)
              
            ' 检查字符的颜色是否为红色
            If .Cells(i, 1).Characters(j, 1).Font.Color <> 0 Then
                If Rng Is Nothing Then Set Rng = .Cells(i, 1) Else Set Rng = Union(Rng, .Cells(i, 1))
            End If
        Next
    Next
    If Not Rng Is Nothing Then Rng.Delete (xlUp)
    End With
End Sub

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-18 14:26 , Processed in 0.046446 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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