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 Text to Columns.

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 li sostituisce con niente (una stringa vuota) in modo che possa determinare quanti backslash 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 si desidera utilizzare una macro, è possibile crearne una che passi all’indietro nel percorso finché non individua l’ultima barra rovesciata. Quindi restituisce tutto dopo la barra rovesciata. L’esempio seguente inizia nella cella B1, esaminando tutto a destra della cella (cella A1) e quindi inizia a estrarre i nomi dei file. Passa attraverso tutte le celle nella colonna A e inserisce il nome del file, se presente, nella colonna B.

Sub GetFileName1()

Dim Delimiter As String     Dim Target As String     Dim sFile As String     Dim J As Integer     Dim iDataLen As Integer

Delimiter = "\"

Range("B1").Select     Do While ActiveCell.Offset(0, -1).Value <> ""

Target = ActiveCell.Offset(0, -1).Value         iDataLen = Len(Target)

sFile = "Delimiter Not Found"

For J = iDataLen To 2 Step -1             If Mid(Target, J, 1) = Delimiter Then                 sFile = Right(Target, iDataLen - J)

Exit For             End If         Next J         ActiveCell.Formula = sFile         ActiveCell.Offset(1, 0).Select     Loop End Sub

Puoi anche usare una versione molto più breve di una macro, a condizione che tu possa usare la funzione Dividi. Questa funzione è stata introdotta nella versione di VBA fornita con Excel 2000 e separerà una stringa in base a un delimitatore specificato e inserirà le parti in un array. Questo esempio mostra la soluzione implementata come funzione definita dall’utente.

Function GetFileName2(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName2 = Parts(UBound(Parts))

End Function

In questo utilizzo, la funzione Dividi 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. Per usare la funzione, metti una formula come questa in una cella:

=GetFileName2(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 (7333) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: