如何从具有多种颜色文本的单元格中提取基于字体颜色的文本,并通过Delimiter分隔多个单词?

时间:2015-09-30 11:30:47

标签: excel excel-vba text colors vba

How to extract text based on font color from a cell with text of multiple colors

我有一列数据(A)。列(A)中每个单元格中的数据是半色和另一半色。如果它们位于不同的地方,我必须提取由分隔符分隔的每个单词。我在上面的链接中尝试了解决方案但无法进行更改以适应我的目的,因为我是vba的初学者。请提出解决此问题的方法。

(A)原件..........(B)红色

abcdefgh .......... abc,gh

1 个答案:

答案 0 :(得分:2)

用户定义的函数(也就是UDF)可以帮助您完成此任务。

Function udf_Whats_Colored(rTXT As Range, Optional iCLRNDX As Long = 3)
    Dim c As Long, str As String

    For c = 1 To Len(rTXT.Text)
        With rTXT.Characters(Start:=c, Length:=1)
            If .Font.ColorIndex = iCLRNDX Then
                If Not CBool(Len(str)) Or _
                   rTXT.Characters(Start:=c + (c > 1), Length:=1).Font.ColorIndex = iCLRNDX Then
                    str = str & Mid(rTXT.Text, c, 1)
                Else
                    str = str & ", " & Mid(rTXT.Text, c, 1)
                End If
            End If
        End With
    Next c
    udf_Whats_Colored = str

End Function

在考虑了所有可用的红色阴影之后,我选择了更简单的.ColorIndex = 3解决方案。有一个可选参数,您可以设置自己的ColorIndex property号码。如果您需要更多颜色,将代码交换到.Font.Color property

应该是一件小事

Which Red Characters

B2中上图中使用的语法是

=udf_Whats_Colored(A2)

ColorIndex Palette Table
ColorIndex调色板表