Hi,
Without VBA it would be quite tricky to string together an array formula to do this. It is MUCH easier to use a user defined function.
Just add it to a module in VBA (ALT+F11) and use it instantly in your sheets like this:
String in A1: Mary and John at IBM thought this was a GREAT OPPORTUNITY.
In B1 enter: =WordsToLower(A1)
Function WordsToLower(str As Variant) As String
Dim i As Integer, sNewStr As String, sTmp As String
For i = 0 To UBound(Split(str, " "))
sTmp = Split(str, " ")(i)
If UCase(sTmp) = sTmp And Len(sTmp) > 3 Then
sNewStr = sNewStr & " " & LCase(sTmp)
Else
sNewStr = sNewStr & " " & sTmp
End If
Next i
WordsToLower = Trim(sNewStr)
End Function
Bookmarks