Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [EXEL] creare un elenco ordinato a partire da una lista di strutture dati

    Buongiorno a tutti... io ho una lista così ordinata, contenuta su un foglio exel:
    codice:
    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:
    codice:
    Elem1         Elem 2
    Elemento1a    Elemento2a
    Elemento1b    Elemento2b
    Elemento1c    Elemento2c
    http://www.neonargon.com/
    ----:::[ GoTeNsSj4 ]:::----

  2. #2
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.