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 = (LBound(vaArray)+1) 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 = LBound(vaArray) 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)

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 (10560) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Making_PROPER_Skip_Certain_Words [Haciendo APROPIADO Omitir ciertas palabras].