Terry usa la función de hoja de trabajo ADECUADA todo el tiempo para cambiar el caso del texto en sus hojas de trabajo. Se pregunta si hay una forma de indicarle a la función que ignore ciertas palabras, de modo que no comiencen con una letra mayúscula. No es inusual que tenga que volver después de usar ADECUADO y cambiar palabras como «el» o «una» a minúsculas. Si PROPER pudiera omitir el cambio de esas palabras automáticamente, sería de gran ayuda.

Una forma de abordar esto es utilizar la función de hoja de cálculo SUSTITUIR junto con la función APROPIADA. Por ejemplo, si desea encontrar instancias de la palabra «The» con «the», puede usar lo siguiente:

=SUBSTITUTE(PROPER(A1)," The "," the ")

Tenga en cuenta la inclusión del espacio antes y después de lo que está buscando y lo que está reemplazando. Esto asegura que solo se modifiquen las palabras completas. También se asegura de que no se realicen cambios al principio del valor de la celda o al final.

Si desea buscar otras palabras que necesitan ser reemplazadas, simplemente puede aumentar la cantidad de instancias de SUSTITUIR en la fórmula:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")

Obviamente, esto puede resultar un poco incómodo si tiene muchas palabras que desea excluir de la modificación. En ese caso, deberá recurrir al uso de una macro. La siguiente macro, escrita como una función definida por el usuario, se puede utilizar para convertir todas las palabras de una celda en mayúsculas iniciales (como en PROPIO), pero asegúrese de que ciertas palabras definidas estén en minúsculas.

Function Title(ByVal ref As Range) As String     Dim vaArray As Variant     Dim c As String     Dim i As Integer     Dim J As Integer     Dim vaLCase As Variant     Dim str As String

' Array contains terms that should be lower case     vaLCase = Array("a", "an", "and", "in", "is", _       "of", "or", "the", "to", "with")



c = StrConv(ref, 3)

'split the words into an array     vaArray = Split(c, " ")

For i = 2 To UBound(vaArray)

For J = LBound(vaLCase) To UBound(vaLCase)

' compare each word in the cell against the             ' list of words to remain lowercase. If the             ' Upper versions match then replace the             ' cell word with the lowercase version.

If UCase(vaArray(i)) = UCase(vaLCase(J)) Then                 vaArray(i) = vaLCase(J)

End If         Next J     Next i

' rebuild the sentence     str = ""

For i = 1 To UBound(vaArray)

str = str & " " & vaArray(i)

Next i

Title = Trim(str)

End Function

Para usar la macro, todo lo que necesita hacer es usar lo siguiente en su hoja de trabajo:

=Title(A1)

Si obtiene un error cuando intenta ejecutar esta macro, es muy probable que esté usando Excel 97. La función Dividir no se agregó hasta Excel 2000, por lo que los usuarios de Excel 97 obtendrán un error. Si lo hace, agregue la siguiente macro que emula lo que hace la función Split.

Function Split(Raw As String, Delim As String) As Variant     Dim vAry() As String     Dim sTemp As String     Dim J As Integer     Dim Indx As Integer

Indx = 0     sTemp = Raw     J = InStr(sTemp, Delim)

While J > 0         Indx = Indx + 1         ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(Left(sTemp, J))

sTemp = Trim(Mid(sTemp, J, Len(sTemp)))

J = InStr(sTemp, Delim)

Wend     Indx = Indx + 1     ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(sTemp)

Split = vAry()

End Function

También puede encontrar un enfoque adicional para lograr la conversión deseada en este sitio:

http://dmcritchie.mvps.org/excel/proper.htm

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (10559) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.

Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Making_PROPER_Skip_Certain_Words [Hacer APROPIADO Omitir ciertas palabras].