PDA

Visualizza la versione completa : [EXEL] creare un elenco ordinato a partire da una lista di strutture dati


GoTeNsSj4
04-09-2008, 14:22
Buongiorno a tutti... io ho una lista così ordinata, contenuta su un foglio exel:


Elemento 1a
Elemento 2a
Spazio vuoto
Elemento 1b
Elemento 2b
Spazio vuoto
Elemento 1c
Elemento 2c
...
...
...


E' possibile tramite qualche comando, o tramite qualche programma, ordinare gli elementi in modo tale da avere:


Elem1 Elem 2
Elemento1a Elemento2a
Elemento1b Elemento2b
Elemento1c Elemento2c

maxlox
04-09-2008, 16:05
si è possibile, ed in più di un modo.

il primo è quello che prevede l'uso dei filtri (se lo devi fare una sola volta).

il secondo prevede la scrittura di una piccola routine in visual basic (attivando l'editor di visual basic dal menu 'strumenti'->'macro') ed inserisci una nuova routine ('inserisci'->'routine'): ti serve un doppio ciclo 'for...next', il nome del foglio su cui lavori, la dichiarazione di alcune variabili ed alcune funzioni sulle celle:

ti consiglio di:
- individuare il foglio sorgente e destinazione:

' foglio SORGENTE
foglio_sorgente = "FoglioSorgente"
' foglio DESTINAZIONE
foglio_destinazione = "FoglioDestinazione"

- individuare il range su cui operare:

range_sorgente = "A2:A1000" ' in eccesso

- dichiarare un contatore di colonna: ncol inizializzato a 1

- dichiarare un contatore riga: nrow inizialittaro alla riga da cui vuoi scrivere (p.es. 3)

- e dettagliare un po' meglio il codice di seguito:

For n = 1 To Worksheets(foglio_sorgente).Range(range_sorgente). Rows.count
With Worksheets(foglio_sorgente)
With .Range(range_sorgente)
elemento = .Cells(n, 1).Value
End With ' worksheets
End With ' range
If elemento <> "" Then
With Worksheets(foglio_destinazione)
.Cells(nrow, ncol).Value = elemento
End With
nrow = nrow + 1
ncol = ncol + 1
If ncol > 2 Then
ncol = 1
End If
Next n
MsgBox ("*** Fine sub ***")


ovviamente il codice può essere migliorato ... ma se non devi andare per il sottile funziona.
le variabili vanno dichiarate in stile Visual Basic; per esempio:

Dim n As Integer, _
Dim nrow As Integer, _
Dim ncol As Integer, _
Dim elemeto As Variant

in bocca al lupo.

Loading