¿Cómo convertir una cadena de texto a mayúsculas iniciales con excepciones en Excel?
En Excel, puedes aplicar la función Mayúsculas Iniciales para convertir cadenas de texto a mayúsculas iniciales fácilmente. Sin embargo, a veces necesitas excluir algunas palabras específicas al convertir las cadenas de texto a mayúsculas iniciales, como se muestra en la siguiente captura de pantalla. En este artículo, hablaré sobre algunos trucos rápidos para resolver esta tarea en Excel.
Convertir cadenas de texto a mayúsculas iniciales con excepciones utilizando una fórmula
Convertir cadenas de texto a mayúsculas iniciales con excepciones utilizando código VBA
Convertir cadenas de texto a mayúsculas iniciales con excepciones utilizando una fórmula
Quizás la siguiente fórmula pueda ayudarte a manejar esta tarea rápidamente; por favor, sigue estos pasos:
Introduce esta fórmula:
=MAYUSC(IZQUIERDA(A2))&EXTRAE(LIMPIAR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(" "&PROPER(A2)&" "," Of "," of ")," A "," a "),"Is "," is ")," Usa "," USA ")),2,LARGO(A2)) en una celda donde desees obtener el resultado, y luego arrastra el controlador de relleno para completar esta fórmula, y las cadenas de texto se habrán convertido a mayúsculas iniciales excepto las excepciones específicas, ver captura de pantalla:
Nota: En la fórmula anterior, A2 es la celda que deseas convertir, “Of ”, “A”, “Is”, “Usa” son las palabras en mayúsculas iniciales normales después de la conversión, “of ”, “a”, “is”, “USA” son las palabras que deseas excluir de las mayúsculas iniciales. Puedes cambiarlas según tus necesidades o agregar otras palabras con la función SUSTITUIR.
Convertir cadenas de texto a mayúsculas iniciales con excepciones utilizando código VBA
Si la fórmula anterior es algo difícil de entender y adaptar a tus necesidades, aquí también puedes aplicar un código VBA para realizar esta tarea. Por favor, sigue los siguientes pasos uno por uno.
1. Mantén presionadas las teclas ALT + F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones.
2. Haz clic en Insertar > Módulo, y pega el siguiente código en la Ventana del Módulo.
Código VBA: convertir cadenas de texto a mayúsculas iniciales con excepciones:
Sub CellsValueChange()
'Updateby Extendoffice
Dim xSRg As Range
Dim xDRg As Range
Dim xPRg As Range
Dim xSRgArea As Range
Dim xRgVal As String
Dim xAddress As String
Dim I As Long
Dim K As Long
Dim KK As Long
On Error Resume Next
xAddress = Application.ActiveWindow.RangeSelection.Address
Set xSRg = Application.InputBox("Original cells:", "KuTools For Excel", xAddress, , , , , 8)
If xSRg Is Nothing Then Exit Sub
Set xDRg = Application.InputBox("Output cells:", "KuTools For Excel", , , , , , 8)
If xDRg Is Nothing Then Exit Sub
Set xPRg = Application.InputBox("Cells to exclude:", "KuTools For Excel", , , , , , 8)
If xPRg Is Nothing Then Exit Sub
Set xDRg = xDRg(1)
For I = 1 To xSRg.Areas.Count
Set xSRgArea = xSRg.Areas.Item(I)
For K = 1 To xSRgArea.Count
xRgVal = xSRgArea(K).Value
If Not IsNumeric(xRgVal) Then
xRgVal = CorrectCase(xRgVal, xPRg)
xDRg.Offset(KK).Value = xRgVal
End If
KK = KK + 1
Next
Next
End Sub
Function CorrectCase(ByVal xRgVal As String, ByVal xPRg As Range) As String
Dim xArrWords As Variant
Dim I As Integer
Dim xPointer As Integer
Dim xVal As String
xPointer = 1
xVal = xRgVal
xArrWords = WordsOf(xRgVal)
For I = 0 To UBound(xArrWords)
xPointer = InStr(xPointer, " " & xVal, " " & xArrWords(I))
Debug.Print xPointer
Mid(xVal, xPointer) = CorrectCaseOneWord(CStr(xArrWords(I)), xPRg)
Next I
CorrectCase = xVal
End Function
Function WordsOf(xRgVal As String) As Variant
Dim xDelimiters As Variant
Dim xArrRtn As Variant
xDelimiters = Array(",", ".", ";", ":", Chr(34), vbCr, vbLf)
For Each xEachDelimiter In xDelimiters
xRgVal = Application.WorksheetFunction.Substitute(xRgVal, xEachDelimiter, " ")
Next xEachDelimiter
xArrRtn = Split(Trim(xRgVal), " ")
WordsOf = xArrRtn
End Function
Function CorrectCaseOneWord(xArrWord As String, xERg As Range) As String
With xERg
If IsError(Application.Match(xArrWord, .Cells, 0)) Then
CorrectCaseOneWord = Application.Proper(xArrWord)
Else
CorrectCaseOneWord = Application.VLookup(xArrWord, .Cells, 1, 0)
End If
End With
End Function
3. Luego presiona la tecla F5 para ejecutar este código, y aparecerá un cuadro de diálogo para recordarte que selecciones las celdas originales que deseas convertir, ver captura de pantalla:
4. Luego haz clic en Aceptar, selecciona las celdas donde deseas obtener los resultados en el cuadro emergente, ver captura de pantalla:
5. Continúa haciendo clic en Aceptar, y en el cuadro de diálogo emergente, selecciona los textos que deseas excluir, ver captura de pantalla:
6. Luego haz clic en Aceptar para salir de los cuadros de diálogo, y todas las cadenas de texto se habrán convertido a mayúsculas iniciales excepto las palabras especificadas, ver captura de pantalla:
Las mejores herramientas de productividad para Office
Potencia tus habilidades en Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...
Office Tab lleva la interfaz de pestañas a Office y facilita mucho tu trabajo
- Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de nuevas ventanas.
- ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!