This approach uses a single list of non-proper case words.
The column of Case Sprecific Words is a named range Words (=Sheet1!$G$2:$G$14).
The words in this range can have characters of mixed cases.
This range needs to be sorted ascending.
For single words, the spreadsheet formula (in B2) works:
=IF(ISNUMBER(MATCH(A2,Words,0)),LOOKUP(A2,Words,Words),PROPER(A2))
If you have cells with more than one word, the UDF CorrectCase works
=CorrectCase(A2,Words) is in C2
If needed, more punctuation can be added to the array in WordsOf.
Code:
Function CorrectCase(ByVal inputString As String, ByVal caseListRange As Range) As String
Dim arrWords As Variant
Dim i As Long, Pointer As Long
On Error GoTo Halt
Pointer = 1
CorrectCase = inputString
arrWords = WordsOf(inputString)
For i = 0 To UBound(arrWords)
Pointer = InStr(Pointer, inputString, arrWords(i))
Mid(CorrectCase, Pointer) = CorrectCaseOneWord(CStr(arrWords(i)), caseListRange)
Next i
Halt:
On Error GoTo 0
End Function
Function WordsOf(inputString As String) As Variant
Dim Delimiters As Variant, aDelimiter As Variant
Dim arrResult As Variant
Delimiters = Array(" ", ",", ".", ";", ":", Chr(34), vbCr, vbLf): Rem add to as needed
For Each aDelimiter In Delimiters
inputString = Application.Substitute(inputString, aDelimiter, Delimiters(0))
Next aDelimiter
arrResult = Split(inputString, CStr(Delimiters(0)))
WordsOf = arrResult
End Function
Function CorrectCaseOneWord(inWord As String, caseListRange As Range) As String
With caseListRange
If IsError(Application.Match(inWord, .Cells, 0)) Then
CorrectCaseOneWord = Application.Proper(inWord)
Else
CorrectCaseOneWord = Application.Lookup(inWord, .Cells)
End If
End With
End Function
In the below sheet,
The Excel formula in B2 and down is
=IF(ISNUMBER(MATCH(A2,Words,0)),LOOKUP(A2,Words,Words),PROPER(A2))
The UDF is in C2 downwards,
=CorrectCase(A2,Words)
Words is a named range for G2:G14.
Note that Words is sorted ascending.
<table border=1 cellspacing=0>
<tr align="center" bgcolor=#A0A0A0><td width=25> <td width=125><b>A</b><td width=125><b>B</b><td width=125><b>C</b><td width=25><b>D</b><td width=25><b>E</b><td width=25><b>F</b><td width=25><b>G</b></tr>
<tr><td align="center" bgcolor=#A0A0A0><b>1</b><td align="left" bgcolor=#FFFFFF><u>Input</u><td align="left" bgcolor=#FFFFFF><u>Excel formula</u><td align="left" bgcolor=#FFFFFF><u>UDF</u><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>Case Specific Words</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>2</b><td align="left" bgcolor=#FFFFFF>THE<td align="left" bgcolor=#FFFFFF>The<td align="left" bgcolor=#FFFFFF>The<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>a</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>3</b><td align="left" bgcolor=#FFFFFF>UPS<td align="left" bgcolor=#FFFFFF>UPS<td align="left" bgcolor=#FFFFFF>UPS<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>AMA</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>4</b><td align="left" bgcolor=#FFFFFF>DRIVER<td align="left" bgcolor=#FFFFFF>dRiVeR<td align="left" bgcolor=#FFFFFF>dRiVeR<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>an</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>5</b><td align="left" bgcolor=#FFFFFF>MAY <td align="left" bgcolor=#FFFFFF>May <td align="left" bgcolor=#FFFFFF>May <td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>at</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>6</b><td align="left" bgcolor=#FFFFFF>DRIVE<td align="left" bgcolor=#FFFFFF>Drive<td align="left" bgcolor=#FFFFFF>Drive<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>dRiVeR</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>7</b><td align="left" bgcolor=#FFFFFF>IN<td align="left" bgcolor=#FFFFFF>in<td align="left" bgcolor=#FFFFFF>in<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>etc</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>8</b><td align="left" bgcolor=#FFFFFF>A<td align="left" bgcolor=#FFFFFF>a<td align="left" bgcolor=#FFFFFF>a<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>FBI</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>9</b><td align="left" bgcolor=#FFFFFF>TRUCK<td align="left" bgcolor=#FFFFFF>Truck<td align="left" bgcolor=#FFFFFF>Truck<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>in</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>10</b><td align="left" bgcolor=#FFFFFF>OF <td align="left" bgcolor=#FFFFFF>of <td align="left" bgcolor=#FFFFFF>of <td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>of</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>11</b><td align="left" bgcolor=#FFFFFF>STEEL<td align="left" bgcolor=#FFFFFF>Steel<td align="left" bgcolor=#FFFFFF>Steel<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>PD</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>12</b><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>TX</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>13</b><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>UPS</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>14</b><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF>USA</tr>
<tr><td align="center" bgcolor=#A0A0A0><b>15</b><td align="left" bgcolor=#FFFFFF>THE UPS DRIVER
MAY DRIVE IN
A TRUCK OF STEEL<td align="left" bgcolor=#FFFFFF>The Ups Driver
May Drive In
A Truck Of Steel<td align="left" bgcolor=#FFFFFF>The UPS dRiVeR
May Drive in
a Truck of Steel<td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF><td align="left" bgcolor=#FFFFFF></tr>
</table>