Barry ha un foglio di lavoro in cui una colonna contiene molti percorsi di file. Vorrebbe un modo per estrarre solo il nome del file (la parte a destra della barra rovesciata finale) da ogni percorso. Si chiede se esiste un modo rapido per farlo senza utilizzare la funzione Testo in colonne.

Esistono diversi modi, a seconda che si desideri utilizzare una macro o meno.

Se i nomi dei file hanno tutti la stessa lunghezza, puoi semplicemente utilizzare la funzione DESTRA per estrarre gli ultimi caratteri. (Questa formula presuppone che il percorso completo e il nome del file siano nella cella A1.)

=RIGHT(A1,11)

Ciò presuppone che il nome del file sia sempre lungo 11 caratteri, ad esempio “text001.txt”. Se il nome del file ha una lunghezza diversa in ogni istanza, questo approccio non funzionerà. Invece, puoi provare questa formula:

=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

Notare che la formula utilizza due volte la funzione SOSTITUISCI. In ogni caso, sostituisce le barre rovesciate (\) con qualcos’altro. La prima volta li sostituisce tutti con un valore ASCII di 1 e la seconda volta li sostituisce con niente (una stringa vuota) in modo che possa determinare quante barre rovesciate erano nel percorso originale. La funzione MID viene utilizzata per individuare (con l’aiuto delle funzioni TROVA e SOSTITUISCI) la posizione dell’ultima barra rovesciata nel percorso e restituisce tutto dopo quel punto.

Una formula più breve può essere utilizzata se sei sicuro che il nome del file non sarà mai più lungo di 99 caratteri:

=TRIM(RIGHT(SUBSTITUTE(A2,"\",REPT(" ",100)),99))

Questa formula sostituisce tutte le barre rovesciate con 100 spazi, prende i 99 caratteri più a destra dalla stringa risultante (che sarebbe il nome del file con un mucchio di spazi davanti) e quindi taglia tutti gli spazi.

Se vuoi usare una macro puoi creare una funzione molto breve che separerà una stringa (il percorso completo, in questo caso) in base ai delimitatori:

Function GetFileName(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName = Parts(UBound(Parts))

End Function

Te l’avevo detto che era breve! La funzione che fa il lavoro pesante è la funzione Split che separa una stringa in base a un delimitatore specificato e inserisce le parti in un array. In questo esempio, la funzione Split utilizza come delimitatore qualsiasi separatore di percorso appropriato per il sistema su cui è in esecuzione Excel.

L’ultimo elemento dell’array risultante (determinato con la funzione UBound) contiene la parte del percorso originale che si trova a destra dell’ultimo separatore di percorso, il nome del file.

Puoi sviluppare una funzione ancora più breve per svolgere il lavoro:

Function GetFileName(File_Path) As String     GetFileName=Mid(File_Path,InStrRev(File_Path,"\")+1 End Function

Per utilizzare entrambe le funzioni, inserisci una formula come questa in una cella:

=GetFileName(A1)

_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 (12903) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: