Extracting just the color words

M

Mariela

Hi, I have table with A,B,C and D colums and text in the rows.
Some of the words in the text are with bold and different color letter.
I need to extract those words.
How can I do this?

I'm using Excel 2003

Thanks in advance,

Mariela
 
B

Bernie Deitrick

Mariela,

You would need to use a User-Defined-Function. See the definition below.
Copy and paste it into a codemodule in your workbook, then use it like

=ColorWord(A1,3)

to extract the red letters from cell A1.

HTH,
Bernie
MS Excel MVP


Function ColorWord(myCell As Range, iColor As Integer)
Dim i As Integer
ColorWord = ""
With myCell
For i = 1 To Len(myCell.Text)
With .Characters(i, 1).Font
If .ColorIndex = iColor Then
ColorWord = ColorWord & Mid(myCell.Text, i, 1)
End If
End With
Next i
End With
End Function
 
M

Mariela

Hi Bernie,

Thanks for your help. It's really appriciate.
I have one more question. What should I put in iColor field - number 3 or
something else?

Mariela
 
M

Mariela

Ok, I understand how formula is working. And I saw I wasn't clear enough of
what I want it to get as resault. So I have table with text in the rows.
Words are in black and just some of them have red letter. What I need to do
is to extract the whole word that contain red letter, not just the letter.

it is something like that
A B C D
1 bl<u>e blue blue blue
2 blue blue blue blu<e>
3 blu<e> b<l>ue bl<u>e blu<e>
4 blue blue blue blue

<> - red letter


Mariela
 
B

Bernie Deitrick

Mariela,

Use the modified version below.

HTH,
Bernie
MS Excel MVP

Function ColorWord(myCell As Range, iColor As Integer)
Dim i As Integer
Dim j As Integer
Dim Start As Integer
Dim myEnd As Integer
ColorWord = ""
With myCell
For i = 1 To Len(myCell.Text)
With .Characters(i, 1).Font
If .ColorIndex = iColor Then
For j = i To 1 Step -1
If Mid(myCell.Text, j, 1) = " " Then
Start = j + 1
GoTo FindEnd
End If
Next j
Start = 1
FindEnd:
For j = i To Len(myCell.Text)
If Mid(myCell.Text, j, 1) = " " Then
myEnd = j - 1
GoTo AllFound
End If
Next j
myEnd = Len(myCell.Text)
AllFound:
ColorWord = Mid(myCell.Text, Start, myEnd - Start + 1)
Exit Function
End If
End With
Next i
End With
End Function
 
M

Mariela

Thanks a Lot Bernie!!!!

It's works!!

Mariela

Bernie Deitrick said:
Mariela,

Use the modified version below.

HTH,
Bernie
MS Excel MVP

Function ColorWord(myCell As Range, iColor As Integer)
Dim i As Integer
Dim j As Integer
Dim Start As Integer
Dim myEnd As Integer
ColorWord = ""
With myCell
For i = 1 To Len(myCell.Text)
With .Characters(i, 1).Font
If .ColorIndex = iColor Then
For j = i To 1 Step -1
If Mid(myCell.Text, j, 1) = " " Then
Start = j + 1
GoTo FindEnd
End If
Next j
Start = 1
FindEnd:
For j = i To Len(myCell.Text)
If Mid(myCell.Text, j, 1) = " " Then
myEnd = j - 1
GoTo AllFound
End If
Next j
myEnd = Len(myCell.Text)
AllFound:
ColorWord = Mid(myCell.Text, Start, myEnd - Start + 1)
Exit Function
End If
End With
Next i
End With
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top