How to extract text based on font color from a cell with text of multiple colors
我有一列数据(A)。列(A)中每个单元格中的数据是半色和另一半色。如果它们位于不同的地方,我必须提取由分隔符分隔的每个单词。我在上面的链接中尝试了解决方案但无法进行更改以适应我的目的,因为我是vba的初学者。请提出解决此问题的方法。
(A)原件..........(B)红色
abcdefgh .......... abc,gh
答案 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。
B2中上图中使用的语法是
=udf_Whats_Colored(A2)