How about a little macro:
Option Explicit
Option Base 1
Option Compare Text
Sub testme()
Dim curWks As Worksheet
Dim newWks As Worksheet
Dim oRow As Long
Dim iCtr As Long
Dim myRng As Range
Dim myCell As Range
Dim dotPos As Long
Dim spacePos As Long
Dim FoundAMatch As Boolean
Dim myStr As String
Dim myKeys As Variant
Set curWks = Worksheets("sheet1")
Set newWks = Worksheets.Add
myKeys = Array("Address:", "Phone:", "FAX:", _
"E-Mail:", "Website:", "Contact:")
With newWks
.Range("a1").Resize(1, 7).Value _
= Array("Company", "Address", "Phone", _
"FAX", "eMail", "Website", "Contact")
End With
With curWks
Set myRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))
End With
oRow = 1
For Each myCell In myRng.Cells
If Trim(myCell.Value) = "" Then
'do nothing
Else
FoundAMatch = False
'look for Company name
'#####.(space)
spacePos = InStr(1, myCell.Value, ".")
If IsNumeric(Left(myCell.Value, spacePos)) Then
'I think we have it!
oRow = oRow + 1
newWks.Cells(oRow, "A").Value _
= Trim(Mid(myCell.Value, dotPos + 1))
FoundAMatch = True
Else
For iCtr = LBound(myKeys) To UBound(myKeys)
If Left(myCell.Value, Len(myKeys(iCtr))) = myKeys(iCtr) Then
'found the key
myStr = Trim(Mid(myCell.Value, Len(myKeys(iCtr)) + 1))
If myKeys(iCtr) = "e-mail:" Then
myStr = "=Hyperlink(""mailto:" & myStr & """)"
End If
newWks.Cells(oRow, "A").Offset(0, iCtr).Formula = myStr
FoundAMatch = True
Exit For 'stop looking
End If
Next iCtr
End If
If FoundAMatch = False Then
MsgBox "No Match for row #: " & myCell.Row & vbLf & _
"value: " & myCell.Value
End If
End If
Next myCell
newWks.UsedRange.Columns.AutoFit
End Sub
This macro looks for 6 keys:
myKeys = Array("Address:", "Phone:", "FAX:", _
"E-Mail:", "Website:", "Contact:")
And for the company name, it assumes that there's always a number followed by a
dot.
If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm