Condividi:        

EXCEL 2003 - Ordinamento celle vuote in basso

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

EXCEL 2003 - Ordinamento celle vuote in basso

Postdi lucertolina » 12/07/12 15:32

Buon pomeriggio e ben ritrovati! :)
Oggi credo di avere un quesito piuttosto semplice per voi esperti...
Ho registrato una macro su un foglio di lavoro con più righe, dove selezionando la prima riga e chiedendo di selezionare tutte le successive mediante i tasti Shif e TastoGiù, poi deve procedere all'ordinamento secondo dei criteri da me scelti.
Il problema è che quando mi ritrovo con una file di una sola riga da ordinare mi ordina le righe mettendo prima quelle vuote e alla fine quella di mio interesse.
Premetto che questa macro è in sequenza ad altre, e applicata ad un file che ha una lunghezza diversa ogni volta...
Come posso risolvere?
Grazie e buona serata
Lucertolina
Windows 7 + OFF 2013 /// Windows 10 + Office 2010
lucertolina
Utente Junior
 
Post: 89
Iscritto il: 19/03/12 10:17
Località: Bergamo

Sponsor
 

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi Flash30005 » 12/07/12 17:00

Se hai una sola riga suppongo che tu non voglia l'ordinamento (non c'è nulla da ordinare), giusto?
Nella macro per evitare di ordinare quando hai una sola riga puoi usare questa funzione
Codice: Seleziona tutto
UR = Range("A" & Rows.Count).End(xlUp).Row  '<<<<< fa riferimento alla colonna "A", se i tuoi dati sono su altra colonna modifica la lettera
If UR > 1 then
'esegue l'ordinamento
end if


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi Anthony47 » 13/07/12 00:22

Se non risolvi con quanto suggerito da Flash (vedi sopra) allora vorrei sapere se e' l' utente che seleziona l' area da ordinare e con quale procedura (Shift -FrecciaGiu'? Contr-Shift-FrecciaGiu'??) o se e' la macro (allora: cosa fa l' utente e come, cosa fa la macro e come).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi lucertolina » 13/07/12 08:24

:eeh:
...bbbuongiorno... :undecided:
Vi ringrazio per la risposta... ma non ho capito cosa dovrei fare... :-?
Allora... sempre dal mio gestionale, lancio una stampa che mi apre un file in excel. Nelle prime righe ci sono dei dati di intestazione che devo lasciare così, dalla riga nr. 10 cominciano i dati (righe d'ordine) che devo incolonnare, e quindi li devo selezionare.
Poichè il nr. di righe dipende da ogni fornitore, può essere che ce ne siano ad esempio 5 o più, oppure una sola, quindi quando registro la mia macro scelgo il fornitore che me ne propone un numero maggiore, e il comando che utilizzo per selezionarle è Ctrl + Shift + Freccia Giù (mi sono dimenticata il Ctrl ne post precedente :neutral: ) e poi procedo a mettere il testo in colonne. Quando lancio la macro in un file che contiene una sola righa da ordinare mi sposta questa riga alla fine della pagina, mentre io la vorrei alla riga nr. 10...
Ciedo scusa ma l'indicazione che mi avete dato non ho capito come fare per usarla... immaginate di spiegarlo ad un anziano, i bambini sanno già troppo di computers!! :D
Ancora grazie.
Ciao
Lucertolina
Windows 7 + OFF 2013 /// Windows 10 + Office 2010
lucertolina
Utente Junior
 
Post: 89
Iscritto il: 19/03/12 10:17
Località: Bergamo

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi Flash30005 » 13/07/12 09:49

dovresti postare la macro che effettua l'ordinamento
altrimenti potrei dirti di modificare il codice precedente in questa maniera
Codice: Seleziona tutto
UR = Range("A" & Rows.Count).End(xlUp).Row  '<<<<< fa riferimento alla colonna "A", se i tuoi dati sono su altra colonna modifica la lettera
If UR > 10 then
'<<<<<<<<< qui va inserita la macro che esegue l'ordinamento
end if

In maniera tale che quando...
lucertolina ha scritto:Quando lancio la macro in un file che contiene una sola righa da ordinare mi sposta questa riga alla fine della pagina, mentre io la vorrei alla riga nr. 10...

L'ordinameno non avviene essendo una sola riga
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi lucertolina » 13/07/12 11:26

Ciao Flash,
ti posto la macro perchè credo di aver sbagliato qualcosa... mi segnala un errore e mi evidenzia in giallo la parte:

Selection.TextToColumns Destination:=Range("D10"), DataType:=xlFixedWidth, _
OtherChar:="|", FieldInfo:=Array(Array(0, 4), Array(10, 1)), _
TrailingMinusNumbers:=True


Codice: Seleziona tutto
Sub ECFo001()
'
' ECF001 Macro
' Macro registrata il 12/07/2012 da SimonaP
'

'
    UR = Range("A" & Rows.Count).End(xlUp).Row  '<<<<<
    If UR > 10 Then '<<<<<<<<<
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("A10"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 4), Array(5, _
        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), Array(10, 4), Array(11, 4), Array(12 _
        , 1), Array(13, 1), Array(14, 1)), TrailingMinusNumbers:=True
    End If
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    Columns("I:J").Select
    Selection.Insert Shift:=xlToRight
    Columns("N:N").Select
    Selection.Insert Shift:=xlToRight
    Columns("P:P").Select
    Selection.Insert Shift:=xlToRight
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.15748031496063)
        .RightMargin = Application.InchesToPoints(0.15748031496063)
        .TopMargin = Application.InchesToPoints(0.15748031496063)
        .BottomMargin = Application.InchesToPoints(0.15748031496063)
        .HeaderMargin = Application.InchesToPoints(0.15748031496063)
        .FooterMargin = Application.InchesToPoints(0.15748031496063)
        .PrintHeadings = False
        .PrintGridlines = True
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
    Columns("G:G").Select
    Selection.Delete Shift:=xlToLeft
    Range("D10").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("D10"), DataType:=xlFixedWidth, _
        OtherChar:="|", FieldInfo:=Array(Array(0, 4), Array(10, 1)), _
        TrailingMinusNumbers:=True
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Range("D:D,J:J,K:K,L:L,M:M,N:N").Select
    Range("N1").Activate
    Selection.NumberFormat = "dd/mm/yy;@"
    Range("G10").Select
    ActiveCell.FormulaR1C1 = "=TRIM(C[-1])"
    Range("G10").Select
    Selection.Copy
    Range("G11:G181").Select
    ActiveSheet.Paste
    Range("A:B,F:F").Select
    Range("F1").Activate
    Selection.EntireColumn.Hidden = True
    Range("J9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("I7").Select
End Sub
Lucertolina
Windows 7 + OFF 2013 /// Windows 10 + Office 2010
lucertolina
Utente Junior
 
Post: 89
Iscritto il: 19/03/12 10:17
Località: Bergamo

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi Flash30005 » 13/07/12 11:39

Ma perché selezioni nel foglio e avvi la macro e non fai selezionare alla macro l'area che devi ordinare?
es.: tu scrivi
Codice: Seleziona tutto
Range(Selection, Selection.End(xlDown)).Select

Mentre potresti mettere
Codice: Seleziona tutto
Range("A10:Z" & UR).Select
'..
'..


In questa maniera non devi selezionare l'area sul foglio ma avvii direttamente la macro

Ciao

EDIT ore 12:50 Fai attenzione che hai un altro ordinamento (dovrai mettere anche lì la condizione) e riguardando bene la macro ci sono azioni inutili
tipo: all'inizio aggiungi una colonna alla E e poi la togli, insomma è una macro da rivedere bene
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi lucertolina » 13/07/12 11:49

...perchè non so leggere le macro... :cry:

Comunque ho inserito quello che mi hai detto in questo modo:

Codice: Seleziona tutto
Sub ECFo001()
'
' ECF001 Macro
' Macro registrata il 12/07/2012 da SimonaP
'

'
    UR = Range("A" & Rows.Count).End(xlUp).Row  '<<<<<
    If UR > 10 Then '<<<<<<<<<
    Range("A10:Z" & UR).Select
    '..
    '..
    Selection.TextToColumns Destination:=Range("A10"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 4), Array(5, _
        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), Array(10, 4), Array(11, 4), Array(12 _
        , 1), Array(13, 1), Array(14, 1)), TrailingMinusNumbers:=True
    End If
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    Columns("I:J").Select
    Selection.Insert Shift:=xlToRight
    Columns("N:N").Select
    Selection.Insert Shift:=xlToRight
    Columns("P:P").Select
    Selection.Insert Shift:=xlToRight
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.15748031496063)
        .RightMargin = Application.InchesToPoints(0.15748031496063)
        .TopMargin = Application.InchesToPoints(0.15748031496063)
        .BottomMargin = Application.InchesToPoints(0.15748031496063)
        .HeaderMargin = Application.InchesToPoints(0.15748031496063)
        .FooterMargin = Application.InchesToPoints(0.15748031496063)
        .PrintHeadings = False
        .PrintGridlines = True
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
    Columns("G:G").Select
    Selection.Delete Shift:=xlToLeft
    Range("D10").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("D10"), DataType:=xlFixedWidth, _
        OtherChar:="|", FieldInfo:=Array(Array(0, 4), Array(10, 1)), _
        TrailingMinusNumbers:=True
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Range("D:D,J:J,K:K,L:L,M:M,N:N").Select
    Range("N1").Activate
    Selection.NumberFormat = "dd/mm/yy;@"
    Range("G10").Select
    ActiveCell.FormulaR1C1 = "=TRIM(C[-1])"
    Range("G10").Select
    Selection.Copy
    Range("G11:G181").Select
    ActiveSheet.Paste
    Range("A:B,F:F").Select
    Range("F1").Activate
    Selection.EntireColumn.Hidden = True
    Range("J9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("I7").Select
End Sub


ma continua a darmi errore di Run time 004 Non è stato selezionato alcun dato da analizzare , e aprendo il Debug mi evidenzia in giallo questa parte:
Codice: Seleziona tutto
Selection.TextToColumns Destination:=Range("D10"), DataType:=xlFixedWidth, _
        OtherChar:="|", FieldInfo:=Array(Array(0, 4), Array(10, 1)), _
        TrailingMinusNumbers:=True
Lucertolina
Windows 7 + OFF 2013 /// Windows 10 + Office 2010
lucertolina
Utente Junior
 
Post: 89
Iscritto il: 19/03/12 10:17
Località: Bergamo

Re: EXCEL 2003 - Ordinamento celle vuote in basso

Postdi Flash30005 » 13/07/12 12:55

Devi inserire la condizione anche qui
Codice: Seleziona tutto
   
   If UR > 10 Then   '<<<<<<<<<<<<<<<<<<<<< condizione
 'Range("D10").Select  '<<< commenta
    Range("A10:Z" & UR).Select
    Selection.TextToColumns Destination:=Range("D10"), DataType:=xlFixedWidth, _
        OtherChar:="|", FieldInfo:=Array(Array(0, 4), Array(10, 1)), _
        TrailingMinusNumbers:=True
End If '<<<<<<<<<<<<<<< fine condizione

    Columns("E:E").Select


Ma non so se non deve essere eseguita tutta la macro oppure escludere solo l'ordinamento

Se potessi inviare il fiel sarebbe meglio (anche in MP)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL 2003 - Ordinamento celle vuote in basso":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti