¿Cómo convertir una cadena de texto al caso correcto con excepciones en Excel?
En Excel, puede aplicar la función Proper para convertir cadenas de texto al caso adecuado fácilmente, pero, a veces, es necesario excluir algunas palabras específicas al convertir las cadenas de texto al caso adecuado como se muestra en la siguiente captura de pantalla. En este artículo, hablaré sobre algunos trucos rápidos para resolver este trabajo en Excel.
Convierta cadenas de texto en mayúsculas y minúsculas adecuadas con excepciones mediante la fórmula
Convierta cadenas de texto en el caso adecuado con excepciones mediante el código VBA
Convierta cadenas de texto en mayúsculas y minúsculas adecuadas con excepciones mediante la fórmula
Puede ser que la siguiente fórmula pueda ayudarlo a lidiar con esta tarea rápidamente, haga lo siguiente:
Ingrese esta fórmula:
= UPPER (LEFT (A2)) & MID (TRIM (SUBSTITUTE (SUBSTITUTE (SUBSTITUTE (SUBSTITUTE ("" & PROPER (A2) & "", "Of", "of"), "A", "a"), "Es "," es ")," Usa "," USA ")), 2, LEN (A2)) en una celda donde desea obtener el resultado, y luego arrastre el controlador de relleno para completar esta fórmula, y las cadenas de texto se han convertido en el caso adecuado pero con excepciones específicas, vea la captura de pantalla:
Note: En la fórmula anterior, A2 es la celda que desea convertir, "De", "A", "Es", "Estados Unidos" son las palabras mayúsculas adecuadas después de la conversión, "De", "a", "es", "EE. UU." son las palabras que desea excluir del caso adecuado. Puede cambiarlos según sus necesidades o agregar otras palabras con la función SUSTITUIR.
Convierta cadenas de texto en el caso adecuado con excepciones mediante el código VBA
Si la fórmula anterior es algo difícil de entender y cambiar según sus necesidades, aquí también puede aplicar un código VBA para completar esta tarea. Siga los siguientes pasos uno por uno.
1. Mantenga pulsado el ALT + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.
2. Hacer clic recuadro > Móduloy pegue el siguiente código en el Ventana de módulo.
Código VBA: convierta cadenas de texto al caso adecuado 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. Entonces presione F5 para ejecutar este código, y aparece un cuadro emergente para recordarle que seleccione las celdas originales que desea convertir, vea la captura de pantalla:
4. Y luego haz clic OK, seleccione las celdas donde desea generar los resultados en el cuadro emergente, vea la captura de pantalla:
5. Continuar haga clic OK, y en el cuadro de diálogo emergente, seleccione los textos que desea excluir, vea la captura de pantalla:
6. Y luego haz clic OK para salir de los cuadros de diálogo, y todas las cadenas de texto se han convertido al caso adecuado pero excluyen las palabras especificadas, vea la captura de pantalla:
Las mejores herramientas de productividad de oficina
Mejore sus habilidades de Excel con Kutools for Excel y experimente la eficiencia como nunca antes. Kutools for Excel ofrece más de 300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haga clic aquí para obtener la función que más necesita...
Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
- ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!