Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel] Ordinare una tabella variabile Opzioni
aetio
Inviato: Thursday, September 16, 2010 11:50:00 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Ormai non passa giorno che non chieda qualcosa... non c'è più religione :))

Il mio attuale cruccio è questo:
ho delle tabelle come questa,


dal numero di righe variabile (le colonne sono sempre le stesse) i cui dati non sono ordinati come mi servono, quindi per ricavarli devo agire col menù: Modifica>Ordina e filtra>Ordinamento personalizzato. I dati vanno ordinati in senso decrescente di col.A, le tabelle iniziano da col.A fino a col.GT e variano in lunghezza a seconda dei casi.
ho provato a costruire una macro, appoggiandomi ad una dima fatta col registratore usando una data tabella (con un'area definita per quell'occasione) adattando i dati ricavati da altre macro costuite giorni fa per le tabelle con area variabile:

Sub ordina2()
Uriga = Range("A" & Rows.Count).End(xlUp).Row
Set Area = Range("A3", Range("GT3" & Uriga)).SpecialCells(xlCellTypeVisible)
ActiveWorkbook.Worksheets("Archivio").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Archivio").Sort.SortFields.Add Key:= _
Range("A3", Range("GT3" & Uriga)).SpecialCells(xlCellTypeVisible), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Archivio").Sort
.SetRange Range("A3", Range("GT3" & Uriga)).SpecialCells(xlCellTypeVisible)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B3").Select
End Sub

la macro però si pianta alla riga Apply e mi restituisce l'errore


Dove sbaglio in modo clamoroso?
Grazie assai e buona giornata,
eZio



Sponsor
Inviato: Thursday, September 16, 2010 11:50:00 AM

 
a10n11
Inviato: Thursday, September 16, 2010 12:44:53 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
cosa c'è di strano in questa istruzione??


Range("A3", Range("GT3" & Uriga))


prova a cambiare così:

Range("A3", Range("GT" & Uriga)).

saluti
Giap




aetio
Inviato: Thursday, September 16, 2010 1:42:21 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
purtroppo quell'istruzione ".Applay" pare che sia indigesta... esce ancora errore.
Nel frattempo mi sono dato un poco da fare, la materia è talmente affascinante che le ore mi volano via come se fossero minuti... ho provato a scrivere questa che è meno "macchinosa", ma pare che funzioni senza errori:

Sub Ordina3()
On Error Resume Next
Range("A1").Select
Range("A1").End(xlUp).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

E' corretta o vi sono incongruenze? Il collage, per un principiante tra i principianti qual'io sono, spesso nasconde delle trappole letali...
Grazie assai e buon pomeriggio,
eZio

a10n11
Inviato: Thursday, September 16, 2010 2:17:18 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:
Ciao,
purtroppo quell'istruzione ".Applay" pare che sia indigesta... esce ancora errore.
Nel frattempo mi sono dato un poco da fare, la materia è talmente affascinante che le ore mi volano via come se fossero minuti... ho provato a scrivere questa che è meno "macchinosa", ma pare che funzioni senza errori:

Sub Ordina3()
On Error Resume Next
Range("A1").Select
Range("A1").End(xlUp).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

E' corretta o vi sono incongruenze? Il collage, per un principiante tra i principianti qual'io sono, spesso nasconde delle trappole letali...
Grazie assai e buon pomeriggio,
eZio



Salve
a Napoli direbbero è una "Ciofeca"

se togli la riga che intercetta l'errore <<On Error Resume Next>>
scopriresti che la macro non è corretta.

con l'istruzione <<Range("A1").End(xlUp).Select>> vai a selezionare tutte le righe (se ci fossero) al di sopra di A1. Il risultato ottenuto è un ordinamento della cella A1!!!

se tu avessi scritto
Sub Ordina3()
Range("a1",range("a" & rows.count).end(xlup)).select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

forse avresti ottenuto il risultato voluto.
saluti
Giap



aetio
Inviato: Thursday, September 16, 2010 4:04:12 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
a10n11 ha scritto:

a Napoli direbbero è una "Ciofeca"

se togli la riga che intercetta l'errore <<On Error Resume Next>>
scopriresti che la macro non è corretta.

con l'istruzione <<Range("A1").End(xlUp).Select>> vai a selezionare tutte le righe (se ci fossero) al di sopra di A1. Il risultato ottenuto è un ordinamento della cella A1!!!

se tu avessi scritto
Sub Ordina3()
Range("a1",range("a" & rows.count).end(xlup)).select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

forse avresti ottenuto il risultato voluto.
saluti
Giap



hai ragione. la "creatura" funzionava, ma era tenuta insieme col fil di ferro ahahahahahahahahahha... cosa farei mai senza di te?!? :))

Grazie assai e buon pomeriggio
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.