Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

ORDINAMENTO COLONNE SECONDO DATI

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 14/01/14 22:52

CIAO,
vorrei ordinare le colonne, prelevate da file diversi, (nell'esempio ho riportato un solo file con 3 esempi, non bisogna considerare la colonna A e B.) con un ordine che lo imposto io secondo una stringa o array in VBA.

esempio 3 colonne: ord=(COGNOME, NOME, M/F)
Siccome ci sono + colonne con la scritta NOME (NOME PROPRIO, NOME 2, tot NOME, ecc...) vorrei che venissero prese tutte.

NOn conosco il n° di righe di ogni singolo file.

Per il caricamento posso utilizzare il programma:
Sub MakeIndex()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Indice").Cells.ClearContents
myDir = ThisWorkbook.Path & "\"
NSumm = ActiveWorkbook.Name
myFile = Dir(myDir & "*.xls?")
Do While myFile <> ""
If myFile = ThisWorkbook.Name Then GoTo nextF
Workbooks.Open (myDir & myFile)
For FF = 1 To Worksheets.Count
URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row + 1
UROr = Workbooks(myFile).Sheets(FF).Cells(Rows.Count, 1).End(xlUp).Row
Workbooks(myFile).Sheets(FF).Range("A4:C" & UROr).Copy Destination:=Workbooks(NSumm).Sheets("Indice").Cells(URIE, 1)
Next FF
ActiveWorkbook.Close savechanges = False
nextF:
myFile = Dir
Loop

http://rapidshare.com/share/B293816F79450BF4A9E438FDC1BE8AE7

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Sponsor
 

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi Anthony47 » 14/01/14 23:38

Questo e' il contenuto del file:
Immagine

Non riesco a mappare su questi dati la descrizione del problema:
vorrei ordinare le colonne, prelevate da file diversi, (nell'esempio ho riportato un solo file con 3 esempi, non bisogna considerare la colonna A e B.) con un ordine che lo imposto io secondo una stringa o array in VBA.

esempio 3 colonne: ord=(COGNOME, NOME, M/F)
Siccome ci sono + colonne con la scritta NOME (NOME PROPRIO, NOME 2, tot NOME, ecc...) vorrei che venissero prese tutte.

Ti chiedo quindi un supplemento di informazioni.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 14/01/14 23:44

ho sbagliato l'allegato, scusa.
riprovo
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 14/01/14 23:46

EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi Anthony47 » 15/01/14 00:07

Mi sembrava...

Ora pero' vedo che i dati provenienti dai file hanno un tracciato diverso l' un dall' altro, che senso ha metterli nello stesso file?
Poi quando dici "vorrei ordinare le colonne" intendi "fare un ordinamento tipo alfabetico crescente" o "togliere il disordine e il casino"?

Infine i criteri; prendendo ad esempio quanto riporti per File1:
-mi pare che vorresti ordinare per i campi Cognome e Nome; sei in grado di andare a modificare l' intestazione corrente "NOME PROPRIO" con "Nome"?
Idem sarebbe da fare su NOME2 dei file tipo 2 e 3.

Se almeno le intestazioni si possono avere corrette e uniformi (come stringa, non come posizione), penso si possa avere una unica macro che lavora gli N blocchi di informazione, identificando la posizione dei campi e ordinando per quei campi.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 15/01/14 00:18

vorrei eseguire una specie di filtro tra le colonne.
L'ordine delle colonne non è costante perchè i file di provenienza sono generati da fonti diverse.
Alla fine mi servono solo le colonne riportate nella stringa: ord=(COGNOME, NOME, M/F) >>> ord=(*COGNOME*, *NOME*, *M/F*)

grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi Anthony47 » 15/01/14 00:30

Poi quando dici "vorrei ordinare le colonne" intendi "fare un ordinamento tipo alfabetico crescente" o "togliere il disordine e il casino"?
Insomma, "la seconda che avevo detto"

Quindi vorresti riportare in un nuovo foglio solo alcune colonne di quelle in delle tabelle di origine.. Le vorresti organizzate a blocchi (un blocco per ogni file) o un unico blocco sarebbe sufficiente? Possiamo dare per scontato che nei dati di origine ogni blocco e' separato dal precedente almeno da una riga vuota?

Vedro', ma con un anglicismo mi sento di anticipare che "shit in, shit out"

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 15/01/14 10:44

voglio riportare su un file e su un foglio, solo le colonne che desidero ad esempio
ord=(COGNOME, NOME, M/F)
1° colonna "*COGNOME*", 2° colonna "*NOME*", 3° colonna "*M/F*"
oppure
ord=(NOME, M/F, COGNOME)
1° colonna "*NOME*", 2° colonna "*M/F*", 3° colonna "*COGNOME*"

Quindi da ogni file estraggo le colonne desiderate (se esistono) e le riporto nel file di destinazione. in questo caso ho solo n°3 colonne.
Le colonne nei file di origine non hanno spazi una dall'altra. Sono delle tabelle con 7,8,9,10 colonne tutte unite.

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi Anthony47 » 16/01/14 03:27

Le colonne nei file di origine non hanno spazi una dall'altra. Sono delle tabelle con 7,8,9,10 colonne tutte unite.
Prerequisito per il lavoro e' poter identificare in modo inequivocabile la fine di una tabella (con un layout) e l' inizio di altra tabella (probabilmente con altro layout). Visto che (mi pare) le tabelle si susseguono senza interruzione, mi dici se c' e' una regola su cui fare affidamento?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 16/01/14 15:53

Bisogna considerare che su ogni file "sorgente" prelevo le prime 10 colonne.
Ogni file ha una solo tabella.
N° di righe sono variabili.

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 18/01/14 19:52

Ciao,
Per semplificare la soluzione ho creato 3 files DATI_1.XLS, DATI_2.XLS, DATI_3.XLS che dovrebbero essere inseriti in un file unico UNIONE.XLS secondo un preciso ordine delle colonne:
Nome, Descrizione, Materiale, Dimensioni, Peso tot, Unità.

http://rapidshare.com/share/5E8359005F2 ... 1AF721AD54


Grazie.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ORDINAMENTO COLONNE SECONDO DATI

Postdi cd7019 » 24/01/14 00:00

ciao,

grazie ai tuoi insegnamenti forse ci sono riuscito.

Codice: Seleziona tutto
Sub carica()
Dim COD(4001, 25) As String
Dim UTILI(30001, 5) As String
Cells.ClearContents
NFILE = 3: NCOL = 4: NRMAX = 30: NDATI = 4: I0 = 0
For II = 1 To NFILE
    Workbooks.Open FileName:="C:\DATI_" & II & ".xls"
    For J = 1 To NCOL
        For I = 3 To NRMAX
            COD(I, J + (II - 1) * NCOL) = Workbooks("DATI_" & II & ".xls").Worksheets("Foglio1").Cells(I, J)
        Next I
    Next J
    Workbooks("DATI_" & II & ".xls").Close SaveChanges:=False
    If I > I0 Then I0 = I
Next II
   
' VERIFICA
For MM = 1 To NFILE * NCOL
    Cells(1, MM) = MM
    For LL = 3 To I0
        Cells(LL, MM) = COD(LL, MM)
    Next LL
Next MM

For K = 1 To NDATI
    DATI = Choose(K, "Descrizi", "Materiale", "Tipo", "Unit")
    TT = 0
    For KK = 1 To NFILE * NCOL
        If COD(3, KK) Like "*" & DATI & "*" Then
            TT = TT + 1: Cells(2, KK) = "OK"
            For LL = 3 To NRMAX
                UTILI((TT - 1) * NRMAX + LL, K) = COD(LL, KK)
            Next LL
        End If
    Next KK
Next K
   
'VERIFICA
For MM = 1 To NDATI
    For LL = 3 To K * NRMAX
        Cells(LL, MM) = UTILI(LL, MM)
    Next LL
Next MM
End Sub


FILE: http://rapidshare.com/share/FB31B21F9A170063913FF9EF0A2E5527

Ho bisogno ancora di un aiutino:
1) come posso contare il numero di righe max di ogni file aperto.
NRMAX = Evaluate("=Max(if(A3:E65000<>"""",row(A3:E65000),""""))") **** mi legge il file attivo (PROVA.xls)
2) Non conoscendo il nome del foglio come posso "evitarlo", apro 1 solo foglio cioè quello attivo.
.... Workbooks("DATI_" & II & ".xls").Worksheets(???"Foglio1"???).Cells(I, J)
3) E' possibile eliminare da una matrice una riga vuota (es. x celle if [A15:E15]="" then rows(A15:E15).delete)? Penso di NO.

Grazie.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38


Torna a Applicazioni Office Windows


Topic correlati a "ORDINAMENTO COLONNE SECONDO DATI":


Chi c’è in linea

Visitano il forum: enrico43 e 9 ospiti