Terry usa sempre la funzione del foglio di lavoro APPROPRIATO per cambiare il caso del testo nei suoi fogli di lavoro. Si chiede se esiste un modo per istruire la funzione a ignorare determinate parole, in modo che non inizino con una lettera maiuscola. Non è insolito per lui dover tornare indietro dopo aver usato PROPER e cambiare parole come “la” o “una” in tutte minuscole. Se PROPER potesse saltare la modifica automatica di tali parole, sarebbe di grande aiuto.

Un modo per risolvere questo problema consiste nell’usare la funzione del foglio di lavoro SOSTITUISCI insieme alla funzione PROPER. Ad esempio, se volessi trovare istanze della parola “The” con “the”, potresti usare quanto segue:

=SUBSTITUTE(PROPER(A1)," The "," the ")

Nota l’inclusione dello spazio prima e dopo quello che stai cercando e quello che stai sostituendo. Ciò assicura che vengano modificate solo le parole complete. Si assicura inoltre che non vengano apportate modifiche all’inizio del valore della cella o alla fine.

Se vuoi cercare altre parole che devono essere sostituite, puoi semplicemente aumentare il numero di istanze di SOSTITUISCI nella formula:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")

Ovviamente questo può diventare un po ‘imbarazzante se hai molte parole che vuoi escludere dalla modifica. In tal caso dovrai ricorrere all’uso di una macro. La seguente macro, scritta come funzione definita dall’utente, può essere utilizzata per convertire tutte le parole di una cella in maiuscole iniziali (proprio come PROPER), ma assicurati che alcune parole definite siano minuscole.

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

Per utilizzare la macro, tutto ciò che devi fare è utilizzare quanto segue nel tuo foglio di lavoro:

=Title(A1)

Puoi anche trovare un approccio aggiuntivo per realizzare la conversione desiderata in questo sito:

http://dmcritchie.mvps.org/excel/proper.htm

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (10560) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia di menu di Excel qui: