Immaginiamo di dover estrarre solo la parte di testo presente in una cella alfanumerica di Microsoft Excel.
Ad esempio la nostra cella contiene Aa 11 bb22cc 33 e abbiamo bisogno di estrarre il testo ovvero ottenere Aa bbcc
Per fare questo inseriamo una funzione personalizzata, aiutandoci con Visual Basic
Dovendo lavorare in ambiente VBA apriamo la relativa finestra.
In Excel 2007
Bottone di Office – Pulsante Opzioni di Excel – Impostazioni generali – Opzione Mostra scheda Sviluppo sulla barra multifunzione
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
In Excel 2010/2013/2016
Scheda File – Opzioni – Personalizzazione barra multifunzione – Selezionare Sviluppo nella sezione Schede principali
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo) quindi copiare il codice riportato qui sotto:
Function SoloTesto(pWorkRng As Range) As String Dim xValue As String Dim OutValue As String xValue = pWorkRng.Value For xIndex = 1 To VBA.Len(xValue) If Not VBA.IsNumeric(VBA.Mid(xValue, xIndex, 1)) Then OutValue = OutValue & VBA.Mid(xValue, xIndex, 1) End If Next SoloTesto = OutValue End Function
Chiudere la finestra di Visual Basic.
Posizionarsi nella cella in cui si vuole venga restituito solo il testo presente in una cella alfanumerica e digitare la seguente funzione:
=SoloTesto(PWorkRng)
Dove PWorkRng è il riferimento della cella alfanumerica dalla quale si vuole estrarre solamente la parte di testo
Se invece hai solamente bisogno di estrarre solo la parte numerica presente in una cella alfanumerica puoi cliccare qui per le relative istruzioni.
Informatics, ski racer, loves travels, Finland, Norway, mountains, squash, photography, Drones and RC Helicopter
Salve, partendo dalla sua idea, stavo provando a estrarre le sole lettere A-Z, da una stringa di valori misti, ad esempio: @Al#e€SSA/nD$r&O, per ottenere Alessandro. Allego la mia idea che però mi restituisce sempre un valore vuoto. Come potrei risolvere? Grazie in anticipo. Saluti Gianluca
Function EstraiNome(ByVal inputStr As String) As String
Dim resultStr As String
Dim i As Long
Dim char As String
resultStr = “”
For i = 1 To Len(inputStr)
char = Mid(inputStr, i, 1)
If UCase(char) Like “(A-Z)” Then
resultStr = resultStr & char
End If
Next i
EstraiNome = resultStr
End Function