Come convertire una stringa di testo in maiuscolo iniziale con eccezioni in Excel?
In Excel è possibile applicare la funzione MAIUSC.INIZ per convertire facilmente le stringhe di testo in Iniziale maiuscola, ma a volte è necessario escludere alcune parole specifiche durante la conversione delle stringhe di testo in Iniziale maiuscola, come illustrato nello screenshot seguente. In questo articolo illustrerò alcuni trucchi rapidi per risolvere questo compito in Excel.

Convertire stringhe di testo in Iniziale maiuscola con eccezioni mediante formula
Convertire stringhe di testo in Iniziale maiuscola con eccezioni mediante codice VBA
Convertire stringhe di testo in Iniziale maiuscola con eccezioni mediante formula
La formula seguente potrebbe aiutarti a gestire rapidamente questa attività; procedi come indicato:
Inserisci questa formula:
=MAIUSC(SINISTRA(A2))&STRINGA.ESTRAI(ANNULLA.SPAZI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(« »&MAIUSC.INIZ(A2)&« »,« Di »,« di »),« Un »,« un »),«È »,« è »),« Usa »,« USA »)),2,LUNGHEZZA(A2))in una cella in cui desideri ottenere il risultato, quindi trascina il quadratino di riempimento per estendere la formula: le stringhe di testo saranno state convertite in Iniziale maiuscola con le eccezioni specificate, come mostrato nello screenshot:

Nota: nella formula precedente, A2 è la cella che si desidera convertire; “Di ”, “Un”, “È”, “Usa” sono le parole che mantengono l’iniziale maiuscola dopo la conversione; “di ”, “un”, “è”, “USA” sono invece le parole da escludere dall’iniziale maiuscola. È possibile personalizzarle in base alle proprie esigenze o aggiungere altre parole utilizzando la funzione SOSTITUISCI.
Convertire stringhe di testo in Iniziale maiuscola con eccezioni mediante codice VBA
Se la formula precedente risulta difficile da comprendere o personalizzare, puoi utilizzare un codice VBA per portare a termine questa operazione. Segui questi passaggi uno alla volta.
1. Tieni premuti i tasti ALT + F11 per aprire la finestra di Microsoft Visual Basic, Applications.
2. Fai clic su Inserisci > Modulo, quindi incolla il codice seguente nella finestra del modulo.
Codice VBA: convertire stringhe di testo in Iniziale maiuscola 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. Premi quindi il tasto F5 per eseguire il codice; verrà visualizzata una finestra di dialogo che ti chiederà di selezionare le celle originali da convertire, come mostrato nello screenshot:

4. Fai quindi clic su OK, quindi seleziona le celle in cui desideri inserire i risultati nella finestra visualizzata, come mostrato nello screenshot:

5. Fai nuovamente clic su OK, quindi, nella finestra di dialogo visualizzata, seleziona i termini da escludere, come mostrato nello screenshot:

6. Fai infine clic su OK per chiudere le finestre di dialogo: tutte le stringhe di testo saranno state convertite in maiuscolo iniziale, escludendo le parole specificate, come mostrato nello screenshot:

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 oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità 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 all’interno della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
- Funziona meglio insieme— produttività ottimizzata tra le app di Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi