Come convertire una stringa di testo in maiuscolo iniziale con eccezioni in Excel?
In Excel, puoi applicare la funzione Propriamente per convertire facilmente le stringhe di testo in maiuscolo iniziale. Tuttavia, a volte è necessario escludere alcune parole specifiche durante la conversione delle stringhe di testo in maiuscolo iniziale, come mostrato nello screenshot seguente. In questo articolo, parlerò di alcuni trucchi rapidi per risolvere questa operazione in Excel.
Convertire stringhe di testo in maiuscolo iniziale con eccezioni utilizzando una formula
Convertire stringhe di testo in maiuscolo iniziale con eccezioni utilizzando il codice VBA
Convertire stringhe di testo in maiuscolo iniziale con eccezioni utilizzando una formula
Forse la seguente formula può aiutarti a gestire rapidamente questa attività, procedi come segue:
Inserisci questa formula:
=MAIUSC(SINISTRA(A2))&PARTE(TRIM(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(" "&PROPRIAMENTE(A2)&" "," Di "," di ")," A "," a "),"È "," è ")," Usa "," USA ")),2,LUNGHEZZA(A2)) in una cella dove vuoi ottenere il risultato, quindi trascina la maniglia di riempimento per applicare questa formula, e le stringhe di testo verranno convertite in maiuscolo iniziale ma con eccezioni specifiche, vedi screenshot:
Nota: Nella formula sopra, A2 è la cella che desideri convertire, “Di ”, “A”, “È”, “Usa” sono le parole normali in maiuscolo iniziale dopo la conversione, “di ”, “a”, “è”, “USA” sono le parole che desideri escludere dal maiuscolo iniziale. Puoi modificarle secondo necessità o aggiungere altre parole con la funzione SOSTITUISCI.
Convertire stringhe di testo in maiuscolo iniziale con eccezioni utilizzando il codice VBA
Se la formula sopra è un po' difficile da comprendere e modificare secondo necessità, qui puoi anche applicare un codice VBA per completare questa attività. Procedi con i seguenti passaggi uno per uno.
1. Tieni premuti i tasti ALT + F11 per aprire la finestra Microsoft Visual Basic for Applications.
2. Clicca su Inserisci > Modulo, e incolla il seguente codice nella Finestra del Modulo.
Codice VBA: convertire stringhe di testo in maiuscolo iniziale con eccezioni:
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. Quindi premi il tasto F5 per eseguire questo codice, e apparirà una finestra di avviso per ricordarti di selezionare le celle originali che desideri convertire, vedi screenshot:
4. E poi clicca OK, seleziona le celle dove vuoi ottenere i risultati nella finestra apparsa, vedi screenshot:
5. Continua a cliccare OK, e nella finestra di dialogo popup, seleziona i testi che desideri escludere, vedi screenshot:
6. E poi clicca OK per uscire dalle finestre di dialogo, e tutte le stringhe di testo saranno state convertite in maiuscolo iniziale ma escludendo le parole specificate, vedi screenshot:
I migliori strumenti per la produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un'efficienza mai vista prima. Kutools per Excel offre oltre300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Clicca qui per ottenere la funzione di cui hai più bisogno...
Office Tab porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra, invece che in nuove finestre.
- Aumenta la tua produttività del50% e riduce centinaia di clic del mouse ogni giorno!