Condividi:        

Eliminare celle vuote sulle colonne

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

Eliminare celle vuote sulle colonne

Postdi nelson1331 » 27/09/08 20:49

Vorrei sapere con quale macro posso eliminare le celle vuote sulle colonne. Il file e' compreso fra la cella A1 e la cella B8332 cioe' in totale 8332 righe disposte sulle 2 colonne A, B. Le righe che hanno valori numerici li presentano contemporaneamente sia sulla colonna A che sulla colonna B, cosi' come le celle vuote sono tali in entrambe le colonne. I risultati li vorrei racchiudere nelle 2 colonne D, E , trasportati cioe' per riga intera (ed in modo particolare dall' esempio del file allegato, li ho evidenziati dalla cella D1:E19). In attesa di eventuale risposta, ringrazio. Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Sponsor
 

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 28/09/08 01:01

Ciao nelson1331 e benvenuto nel forum.
Per questa operazione io suggerisco il "fitro automatico": selezioni le intere colonne A e B (clicca sulla A della intestazione colonna e poi allarga la selezione); Menu /Dati /Filtro /Filtro automatico; poi clicchi sulla freccina che compare in A1, scegli "vuote"; ripeti su B, sempre scegliendo "vuote"; ti saranno vilualizzate le sole righe vuote, che puoi selezionare ed eliminare con Menu /Modifica /Elimina righe.
Se invece vuoi mantenere le celle piene portandole in col D ed E, filtra per "non vuote", e le celle visualizzate le copi (selezioni, Contr-c) e le incolli in D1 (selezioni D1, Contr-v oppure Enter); togli il filtro per visualizzare l' elenco intero (Menu /Dati /Filtro /Mostra tutto).

Se cosi' non ti risolve posta ancora.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 28/09/08 09:49

Le indicazioni che mi hai fornito, sono valide ed esatte. Siccome l' operazione dovro' ripeterla per 90 volte, chiedo se e' possibile, individuare una macro che assolva a questo compito, automaticamente e che mi trascriva i risultati nelle colonne D, E. Grazie Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 28/09/08 20:44

Se ogni volta devi fare esattamente le stesse cose allora puoi registrare tu stesso la macro che ti serve:
-attiva Registra nuova macro (Menu /Strumenti /Macro /registra nuova macro
-lascia il nome che ti propone, ma nella casella si Scelta rapida scrivi "f" (f come filtro; senza virgolette); conferma co ok.
-esegui le seguenti operazioni:
>selezioni le colonne B:C
>imposti il filtro automatico
>scegli Non vuote in col B
>Contr-c per copiare
>selezioni la cella D1
>Enter per incollare
>tasto Esc
>selezioni cella B1
-interrompi la registrazione, o col pulsante Stop se ti e' comparso all' avvio registrazione o con Menu /Strumenti /Macro /Interrompi registrazione

A questo punto se da tastiera premi Contr-f la macro va in esecuzione ripetendo sempre le istruzioni.
Se vuoi vedere il codice macro generato: Menu /Strumenti /Macro /Macro; scegli dall' elenco il nome della macro, premi Modifica: ti si aprira' l' editor vba e potrai esaminare (o anche modificare...) le istruzioni; sappi che il 50% del codice che scrivo nasce ancora da un Registra nuova macro.

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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 28/09/08 22:00

Ciao Anthony, anche in questo caso abbiamo migliorato ma, se possibile, vorrei un' esecuzione automatica della macro, senza cioe' dover digitare manualmente altri comandi (come ad esempio ctrl+"f"). Questo perche' da cio' che scaturisce dalla macro, devo effettuare una serie di almeno altre 4 verifiche e percio' piu' e' veloce l' esecuzione suddetta, migliore e' il quadro di controllo che posso osservare : in poche parole, globalmente risparmio tempo ed il lavoro e' sicuramente piu' preciso.
Riepilogando ti posso dire che il file e' sempre nello stesso foglio, e che i valori delle celle da eliminare sono sempre comprese fra la cella A1 e la cella B8332 cioe' in totale 8332 righe disposte sulle 2 colonne A, B. Le righe che hanno valori numerici li presentano contemporaneamente sia sulla colonna A che sulla colonna B, cosi' come le celle vuote sono tali in entrambe le colonne. I risultati li vorrei racchiudere sempre nelle 2 colonne D, E , trasportati cioe' per riga intera (ed in modo particolare dall' esempio del file allegato, li ho evidenziati dalla cella D1:E19). L' unica variabile che puo' derivare e' costituita dal numero di celle non vuote che trascrivero' nelle colonne D, E. Grazie ancora per la tua cortesia. Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 29/09/08 15:55

Grazie per l' incoraggiamento. Dal tuo post pero' non traggo nessuno spunto per modificare la macro, che cosi' come e' aderisce a tutta la descrizione rifatta (salvo collaudo con diverso esito sul tuo foglio).
Se tutte le altre operazioni che fai sono eseguite da macro allora si puo' vedere dove inserire una "call Macro1" (o come e' stata chiamata); se e' invece fatto a mano e a occhio la complessita' di premere Contr-f mi sembra trascurabile.

Probabilmente mi sfugge qualcosa, vero?
Ciao, fatti sentire.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 29/09/08 23:16

Ciao Anthony, la Macro che ho realizzato crea nella colonna D,E e solo sulla 1° riga dei valori blank ossia vuoti. Siccome ho impostato altri calcoli, partendo proprio dalla 1° riga questi vengono falsati. La mia domanda e' questa : correggendo l' errore suddetto, e' possibile far eseguire la macro quando col mouse clicco sull' apertura del foglio che la contiene ? Oppure se hai idee alternative, prova a suggerirmele.
Grazie ancora per la tua pazienza. Nelson
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 30/09/08 02:25

Quindi ci sono 2 cose da fare...
1) Evitare la cella vuota in D1.
La tua macro dovrebbe contenere una sequenza tipo
Selection.AutoFilter Field:=1, Criteria1:="<>"
Selection.Copy

Inserisci tra le due questa:
Codice: Seleziona tutto
Range("A2:B8332").Select


2) Eseguire la macro "all' apertura del foglio che la contiene"
a) Se per foglio intendi la "cartella di lavoro = il file.xls", allora
-da excel apri il vba tramite Alt-F11
-nel frame VBAProject di sinistra, doppioclick su ThisWorkbook
-incolla queste istruzioni sul frame di dx:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Macro1
End Sub

Se la macro registrata non si chiama Macro1 allora modifica l' istruzione Call

b) se invece intendi propio il "foglio" del file.xls, allora
-tasto dx sul tab col nome del foglio
-incolla queste istruzioni sul frame di dx:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Call Macro1
End Sub

Per Call Macro1 vedi il commento sopra.

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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 02/10/08 21:48

Private Sub Worksheet_Activate()
Call Macro1
End Sub
Con questa istruzione sono riuscito ad attivare immediatamente la macro, nel momento in cui faccio clic sul foglio. Persiste ancora l' errore sulla 1° riga di copia dei risultati, nella posizione D1, E1 : questo non si verifica su tutti i test con i 90 numeri, ma in molti casi e' proprio una riga sporca : non e' per caso che e' un campo che deve essere resettato ad ogni operazione di macro ? Quando ho fatto le prove, in modalita' completamente manuale, questo errore non si e' mai verificato. Grazie ancora Anthony. Ciao Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 03/10/08 00:42

Per quanto riguarda i dati sporchi in D1:E1, posta il codic della macro che hai ottenuto e vedro' di fare qualche ipotesi e modifica.

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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 03/10/08 21:00

Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 30/09/2008
'
' Scelta rapida da tastiera: CTRL+f
'
Columns("A:B").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
Range("A2:B8332").Select
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range("A:A,B:B").Select
Range("B1").Activate
Application.CutCopyMode = False
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
End Sub

Anthony questa e' la macro che utilizzo. Ciao e grazie di nuovo.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 03/10/08 23:39

La macro non mi ha dato subito lo spunto per capire di piu', pertanto mi sono riletto attentamente tutti i messaggi precedenti.
In particolare, tu dici che la tua tabella occupa A1:B8332; il filtro, invece, presuppone l' esistenza di una intestazione in riga 1 (A1 e B1), e comincia a filtrare da riga2 questo significa che potresti trovarti con in D1 ed E1 delle celle vuote, se la tua serie (col A:B) comincia con un vuoto.
In questa situazione e' anche errato il mio suggerimento di inserire l' istruzione Range("A2:B8332").Select, perche' questa selezione non ti farebbe mai copiare le celle A1:B1, che vorrebbe dire perdere dei dati. Ti faccio notare che tu hai inserito questa istruzione (Range("A2:B8332").Select), ma siccome copi e incolli i dati (da col A:B a col D:E) due volte, la seconda volta (poiche' selezioni "A:A,B:B", cioe' A:B) copi anche A1:B1; per quanto detto prima, che cioe' A1 e B1 non vengono filtrate ma sono sempre visibili, l' effetto finale e' che puoi trovarti in D1:E1 delle celle vuote che non e' quello che ti aspettavi.

CIO' DETTO, sperando di non averti confuso oltre le mie intenzioni, questa macro credo che dovrebbe andare bene:
Codice: Seleziona tutto
Sub Macro1()
'
Columns("D:E").ClearContents
If Range("A1") = "" Then VOff = 1
Columns("A:B").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
Range("A1:B8332").Offset(VOff, 0).Copy Destination:=Range("D1")
Range("A1").Select
Selection.AutoFilter Field:=1
End Sub

Se ti serve, devi riassociarla col tasto Contr-f, tramite Menu /Strumenti /Macro /Macro; selezioni Macro1, Opzioni, inserisci "f" come tasto di scelta rapida; Ok, X per chiudere.

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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 04/10/08 09:29

Ciao Anthony, no purtroppo l' esito e' il loop sulla Macro. Ciao Nelson
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 04/10/08 11:31

La macro da sola non puo' andare in loop; magari hai impostato una macro di SelectionChange o Change o altri eventi?
Se SI, aggiungi Application.EnableEvents = False all' inizio e Application.EnableEvents = True alla fine, cioe':
Codice: Seleziona tutto
Sub Macro1()
'
Application.EnableEvents = False
Columns("D:E").ClearContents
If Range("A1") = "" Then VOff = 1
Columns("A:B").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
Range("A1:B8332").Offset(VOff, 0).Copy Destination:=Range("D1")
Range("A1").Select
Selection.AutoFilter Field:=1
Application.EnableEvents = True
End Sub


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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 04/10/08 13:30

Ho eseguito anche queste istruzioni : ho dovuto dare il comando di fine, perche' dopo 5 minuti continuava a passare ininterrottamente le schermate da 1 foglio ad altri 2 a rotazione continua, senza fermarsi. Quando sono riuscito a fermarlo, ho guardato nelle colonne dei risultati, ed i valori sono giusti, e cioe' mette dei valori anche sulla 1° riga di colonna D, colonna E. Successivamente ai valori esatti, riporta una sfilza interminabile di valori identici, 0 e 90 rispettivamente nella colonna D (0) colonna E (90). Un' altra segnalazione mi compare alla fine forzata della Macro e dice cosi' : errore di run time"28" spazio dello stack esaurito. Se anche non riusciamo a farla funzionare correttamente, grazie lo stesso Anthony per il tuo impegno. Ciao Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 04/10/08 13:55

La macro di cui parliamo ha un inizio e una fine, non ha nessuna possibilita' di andare in loop "da sola".
Evidentemente hai altre macro:
-da excel, fai tasto dx sul tab col nome di ogni foglio, e posta il codice che ti compare, insieme con quanto leggi nell' intestazione della finestra del vba (quella in genere colorata in blu).
-dal vba editor, nel frame VbaProject (a sx) fai doppioclick su ThisWorkbook e idem posta cosa vedi.
-espandi la cartella Moduli (sempre nel frame VBAProject), doppioclick su ogni "Modulox" che trovi, e idem posta cosa vedi, compreso il codice di Macro1.

Ciao, stai tranquillo che la risolviamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 04/10/08 15:25

Il codice della Macro che utilizzo e' questo :
Sub Macro1()
Application.EnableEvents = False
Columns("D:E").ClearContents
If Range("A1") = "" Then VOff = 1
Columns("A:B").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
Range("A1:B8332").Offset(VOff, 0).Copy Destination:=Range("D1")
Range("A1").Select
Selection.AutoFilter Field:=1
Application.EnableEvents = True
Application.Goto Reference:="Macro1"
End Sub
Nelle visualizzazioni dei codici che mi hai richiesto, compaiono solo i nomi o i numeri dei fogli, sia in ThisWorkbook, che in Moduli.
L' unico foglio che contiene la Macro e' il foglio10 (nome = 2step).
Se eseguo la Macro, una volta che la apro ed uso il comando esegui, funziona bene ed in un batter d' occhio mi fornisce i risultati giusti. Se tento di farla eseguire in modo automatico con la funzione :
private sub worksheet_activate ()
call macro1 (questo ho controllato e' proprio il suo nome ed e' l' unica registrata)
end sub
mi ricava ancora i valori giusti, ma dalla prima riga successiva a questi o mi lascia dei valori "sporchi" magari da una precedente elaborazione o mi mette su tutti 0-90 e poi non finisce mai.
Ho provato a cancellarla e rieseguirla ed in precedenza mi ha dato : errore di compilazione
Sub o function non definita. Adesso questa nota non appare piu' ma il problema e' che non si interrompe piu'.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 04/10/08 15:34

Facendo ulteriori prove, mi accorgo pero' che dopo ogni esecuzione, lascia delle tracce nella frame, come quelle sottostanti, e non permette l' esecuzione corretta solo con l' eliminazione delle stesse.
Queste vengono riportate dopo End Sub
Sheets("Manu").Select
Range("A17").Select
ActiveCell.FormulaR1C1 = "39"
Range("B17").Select
Sheets("2step").Select
Application.Run "'GRAVITAZIONE UNIVERSALE DIFFERENZE.xls'!Macro1"
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Re: Eliminare celle vuote sulle colonne

Postdi Anthony47 » 04/10/08 16:07

Ma questa istruzione l' hai inserita tu nella macro?
Application.Goto Reference:="Macro1"

Se SI, perche'? Se NO, allora non so che dire; per una ulteriore prova, Menu /Strumenti /Macro /Protezione, tab Fonti attendibili; dimmi se e' spuntata la voce "Considera attendibile l' accesso al progetto visual basic, se SI toglila e vedi che succede a tutto il resto (la mia macro non ne ha bisogno).

Poi, dici che "Nelle visualizzazioni dei codici che mi hai richiesto, compaiono solo i nomi o i numeri dei fogli, sia in ThisWorkbook, che in Moduli. L' unico foglio che contiene la Macro e' il foglio10 (nome = 2step)"
Ma allora il codice
private sub worksheet_activate ()
call macro1 (questo ho controllato e' proprio il suo nome ed e' l' unica registrata)
end sub

dove si trova? Dovrebbe trovarsi sul "modulo di codice" del foglio su cui esiste il tuo elenco (ci accedi facendo tastp dx, Visualizza codice). Mi accorgo ora che sulle istruzioni che ti ho dato manca un pezzo importante, quello che qui sottolineo:
fai tasto dx sul tab col nome di ogni foglio, scegli Visualizza codice, e posta il codice che ti compare.

Inoltre la macro dovrebbe trovarsi su "Modulo1"; se non esiste ancora, da vba: Menu /Inserisci /Modulo; poi incolli la macro nel frame di dx. Toglila da dove e' ora.

Per quanto riguarda l' affermazione "mi accorgo pero' che dopo ogni esecuzione, lascia delle tracce nella frame", non so che cosa e' per te "la frame",

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

Re: Eliminare celle vuote sulle colonne

Postdi nelson1331 » 04/10/08 16:33

Inoltre la macro dovrebbe trovarsi su "Modulo1"; se non esiste ancora, da vba: Menu /Inserisci /Modulo; poi incolli la macro nel frame di dx. Toglila da dove e' ora.
Anthony e' da un po' che provo con questa correzione e sembra che tutto funzioni.
Grazie davvero per tutto l' impegno e la capacita' che metti a disposizione di chi ti domanda aiuto. Se abiti nelle vicinanze di Modena o per viaggio ti troverai a fermarti se me lo comunichi, un pranzo e' garantito. Grazie ancora e nella speranza che si mantenga tutto ok, ti saluto ancora con gratitudine. Nelson.
nelson1331
Utente Junior
 
Post: 93
Iscritto il: 18/02/08 08:58

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Eliminare celle vuote sulle colonne":


Chi c’è in linea

Visitano il forum: Ricky0185 e 40 ospiti