Alfabetizzazione delle schede del foglio di lavoro (Microsoft Excel)
Se stai lavorando a un progetto che utilizza molti fogli di lavoro in una cartella di lavoro, potresti volerlo ordinare in base al nome del foglio di lavoro. La seguente breve macro farà il trucco molto bene:
Sub SortSheets() Dim I As Integer, J As Integer For I = 1 To Sheets.Count - 1 For J = I + 1 To Sheets.Count If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then Sheets(J).Move Before:=Sheets(I) End If Next J Next I End Sub
Questa macro funziona se hai un numero relativamente basso di fogli di lavoro nella tua cartella di lavoro. Se, quando esegui la macro, noti che l’esecuzione della macro richiede molto tempo, potresti voler utilizzare un algoritmo di ordinamento più efficiente nella macro. Ad esempio, la seguente è una versione che legge i nomi di tutti i fogli di lavoro in un array, ordina l’array usando l’algoritmo BubbleSort e quindi fa l’effettivo arrangiamento:
Sub SortSheets() Dim I As Integer Dim sMySheets() As String Dim iNumSheets As Integer iNumSheets = Sheets.Count Redim sMySheets(1 To iNumSheets) For I = 1 To iNumSheets sMySheets(I) = Sheets(I).Name Next I BubbleSort sMySheets For I = 1 To iNumSheets Sheets(sMySheets(I)).Move Before:=Sheets(I) Next I End Sub
Sub BubbleSort(sToSort() As String) Dim Lower As Integer, Upper As Integer Dim I As Integer, J As Integer, K As Integer Dim Temp As String Lower = LBound(sToSort) Upper = UBound(sToSort) For I = Lower To Upper - 1 K = I For J = I + 1 To Upper If sToSort(K) > sToSort(J) Then K = J End If Next J If I <> K Then Temp = sToSort(I) sToSort(I) = sToSort(K) sToSort(K) = Temp End If Next I End Sub
Chiunque abbia programmato per un po ‘di tempo sa che BubbleSort è una buona routine di ordinamento generale, ma ce ne sono di più veloci disponibili.
Ad esempio, se hai diversi fogli di lavoro e iniziano molto disorganizzati, potresti scoprire che l’algoritmo QuickSort è più vantaggioso. Tutto quello che devi fare per modificare quanto sopra per utilizzare QuickSort è aggiungere l’algoritmo QuickSort come subroutine (puoi trovare l’algoritmo in qualsiasi buon libro di programmazione Visual Basic) e quindi chiamare la procedura dall’interno della macro SortSheets principale. (Questo significa cambiare la riga in cui BubbleSort è ora chiamato.)
C’è un’altra differenza tra questa seconda macro e la prima. La prima macro non presta attenzione al caso del testo utilizzato per denominare i fogli di lavoro. Pertanto, il mio foglio di lavoro verrà visualizzato come il mio foglio di lavoro. La seconda macro presta attenzione al maiuscolo / minuscolo e ordina di conseguenza. Ovviamente, questo non è un problema particolarmente grave, poiché nemmeno Excel presta attenzione al caso nei nomi dei fogli di lavoro.
_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 (1959) 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: