Non è insolito in un ambiente di ufficio lavorare con file Excel creati da altre persone. Alcuni di questi file possono essere molto diversi dai file che potresti creare. Ad esempio, potresti ereditare un file in cui la prima colonna contiene il nome di una persona sulla prima riga, quindi il suo cognome sulla seconda riga. (L’utente ha premuto Alt + Invio per separare il nome dal secondo nella stessa cella.) Cosa succede se è necessario ordinare le righe nel foglio di lavoro in base al cognome della persona?

Forse il modo migliore per completare una tale attività è inserire una nuova colonna nel foglio di lavoro, colonna B. (Questa colonna potrebbe essere nascosta in modo che non venga visualizzata quando si lavora normalmente con il foglio di lavoro o quando lo si stampa). la formula dovrebbe quindi essere inserita in ogni cella della colonna B:

=RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2))

Ovviamente i riferimenti di cella cambieranno quando inseriti nella colonna B. In questa formula la parte TROVA determina la posizione del carattere Alt + Invio (il codice del carattere di questo carattere è 10). La funzione DESTRA restituisce i caratteri nella cella a partire dal carattere che segue il carattere Alt + Invio. Questa soluzione risulta nella colonna B contenente le informazioni sulla seconda riga della prima colonna. Puoi quindi ordinare facilmente in base alle informazioni nella colonna B.

C’è un presupposto fatto in questa soluzione: che ci siano solo due righe in ogni cella della colonna A. Se ce ne sono di più o di meno, la soluzione diventa più difficile. In tal caso, la soluzione migliore (e più semplice) potrebbe essere riformattare il foglio di lavoro in modo che la chiave di ordinamento si trovi in ​​una colonna da sola. Se ciò non è possibile (per qualsiasi motivo), è possibile utilizzare la seguente funzione VBA definita dall’utente:

Function SecLine(x) As String     Dim B1 As Integer     Dim B2 As Integer          B1 = InStr(x, Chr(10))

B2 = InStr(B1 + 1, x, Chr(10))

If (B1 + B2) > 0 Then         If B2 > 0 Then             SecLine = Mid(x, B1 + 1, B2 — B1 - 1)

Else             SecLine = Mid(x, B1 + 1)

End If     End If End Function

Per utilizzare questa routine, includi semplicemente quanto segue nelle celle della colonna B:

=SecLine(A2)

Indipendentemente dal numero di righe presenti nella cella A2 (in questo caso), la funzione restituisce una stringa che rappresenta il valore della seconda riga.

_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 (11925) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

Puoi trovare una versione di questo suggerimento per la vecchia interfaccia di menu di Excel qui: Non-standard Sorting.