Condividi:        

copiare solo celle piene

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

copiare solo celle piene

Postdi raimea » 18/08/12 07:41

ciao a tutti
vorrei riuscire tramite macro, a copiare il contenuto , solo delle celle che contengo numeri
ed adare ad incollarlo in un altro foglio .
il range da controllare e copiare va da i9:i300 del fgl1
le celle con i numeri sono una dietro l'altra non sparse, quindi si parte da i9

poi dovrei andare ad incollare in fgl2 da M9 in giu'
ma attenzione devo sempre incollare / sovrasscrivendo, partendo da M9 (non dalla 1ma cella libera)
e non posso cancellare tutto il contenuto precedente della colonna M9,
se non concellando un numero di celle pari al numero di celle che in fgl 1 contiene dei numeri

io ho provato a fare cio' registrando una macro utilizzando il filtro
ma ne e' nata una macro molto "pesante" , ci mette molto tempo nel mettere /togliere il filtro ecc...
vorrei provare se con una macro e' piu accettabile, spero di essermi spiegato bene.
grazie
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: copiare solo celle piene

Postdi Flash30005 » 18/08/12 09:04

Non mi è chiaro se deve copiare nella stessa riga del foglio1 (dove trova il numero)
oppure in sequenza comunque
questa macro copia in sequenza
Codice: Seleziona tutto
Sub copiaSe1()
Set ws1 = Worksheets("Foglio1")
Set ws2 = Worksheets("Foglio2")
Inic = 9
For RR1 = 9 To 300
If IsNumeric(ws1.Range("I" & RR1).Value) Then
ws2.Range("M" & Inic).Value = ws1.Range("I" & RR1).Value
Inic = Inic + 1
End If
Next RR1
End Sub


Mentre questa copia nella stessa riga del foglio1
Codice: Seleziona tutto
Sub copiaSe2()
Set ws1 = Worksheets("Foglio1")
Set ws2 = Worksheets("Foglio2")
For RR1 = 9 To 300
If IsNumeric(ws1.Range("I" & RR1).Value) Then ws2.Range("M" & RR1).Value = ws1.Range("I" & RR1).Value
Next RR1
End Sub


Per rendere più veloce la macro
puoi usare i codici di calcolo manuale e non aggiornamento schermata
ripristinandoli alla fine della macro

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-

copiare solo celle piene

Postdi raimea » 18/08/12 10:12

quasi ok :)
va bene la macro copiasel
ma c'e un imprevisto cioe' quando mi riporta i dati in fgl 2
mi cancella i dati precedenti .
cioe:
se in fgl 2 precedentemente avevo riportato 20 numeri,
ed ora mi ritrovo a riportarne da fgl1 solo 8 numeri,
non mi deve cancellare i dati precenti di fgl 2 , devo avere 8 nuovi numeri ,e sotto i 12 precedenti.
:eeh:
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: copiare solo celle piene

Postdi Flash30005 » 18/08/12 10:42

C'è qualcosa che non torna
raimea ha scritto:...se in fgl 2 precedentemente avevo riportato 20 numeri,
ed ora mi ritrovo a riportarne da fgl1 solo 8 numeri,
non mi deve cancellare i dati precenti di fgl 2 , devo avere 8 nuovi numeri ,e sotto i 12 precedenti.
:eeh:

(e sotto i 12 precedenti), forse volevi dire 20 precedenti :?: :undecided:

Spero che in colonna M del foglio2 non ci siano dati fino a quando scrive e che le celle al di sotto siano vuote
se così, allora usa questa macro modificata
Codice: Seleziona tutto
Sub copiaSe1()
Set ws1 = Worksheets("Foglio1")
Set ws2 = Worksheets("Foglio2")
Inic = ws2.Range("M" & Rows.Count).End(xlUp).Row + 1
If Inic < 9 Then Inic = 9
For RR1 = 9 To 300
    If IsNumeric(ws1.Range("I" & RR1).Value) Then
        ws2.Range("M" & Inic).Value = ws1.Range("I" & RR1).Value
        Inic = ws2.Range("M" & Rows.Count).End(xlUp).Row + 1
    End If
Next RR1
End Sub


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: copiare solo celle piene

Postdi raimea » 18/08/12 10:55

l'inghippo e' proprio qui... :-?

la col M fgl 2 si', contiene gia dati, che non dvono essere cancellati tutti.
devo sovrascrivere i nuovi dati prelevti da fgl1 in fogl 2 partendo sempre
a sovrascriverli dalla cella M9.
quindi se in fgl2 ho gia 20 numeri "vecchi"
ed ora mi ritrovo in fgl1 9 numeri "nuovi",
dovro' avere in fgl2 da M9 in giu', i 9 numeri nuovi ,e sotto mi devo ritrovare gli 11 "vecchi". :o
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: copiare solo celle piene

Postdi Flash30005 » 18/08/12 13:23

Beh, allora la prima macro andava bene!
Codice: Seleziona tutto
Sub copiaSe1()
Set ws1 = Worksheets("Foglio1")
Set ws2 = Worksheets("Foglio2")
Inic = 9
For RR1 = 9 To 300
If IsNumeric(ws1.Range("I" & RR1).Value) Then
ws2.Range("M" & Inic).Value = ws1.Range("I" & RR1).Value
Inic = Inic + 1
End If
Next RR1
End Sub

Sostituisce, a partire da M9, i numeri vecchi con i nuovi

Oppure mi sfugge qualcosa? :undecided:

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: copiare solo celle piene

Postdi Flash30005 » 18/08/12 13:36

Mi sono accorto che la condizione isnumeric fa passare anche con campo vuoto
quindi aggiungendo un and alla condizione non verranno sovrascritti i campi vuoti (quindi cancellati)
Codice: Seleziona tutto
Sub copiaSe1()
Set ws1 = Worksheets("Foglio1")
Set ws2 = Worksheets("Foglio2")
Inic = 9
For RR1 = 9 To 300
If IsNumeric(ws1.Range("I" & RR1).Value) And ws1.Range("I" & RR1).Value <> "" Then
ws2.Range("M" & Inic).Value = ws1.Range("I" & RR1).Value
Inic = Inic + 1
End If
Next RR1
End Sub


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: copiare solo celle piene

Postdi raimea » 18/08/12 13:41

si ti sta sfuggendo qualcosa :lol:

al momento la macro copia/incolla tutto il contenuto di col i fgl1
mentre come dice il titolo del post devo copiare solo le celle con dei numeri

ma attenzione devo sempre incollare / sovrasscrivendo, partendo da M9 (non dalla 1ma cella libera)
e non posso cancellare tutto il contenuto precedente della colonna M9 del fgl2.
se non concellando un numero di celle pari al numero di celle che in fgl 1 contiene dei numeri


quindi esempio
mi trovo con fgl2 col M che contiene gia dei numeri Es dalla cella M9:M100
in fgl1 col i ora mi ritrovo con solo le prime 9 celle con dei numeri ES le celle I9:I18
in fgl 2 dovro' avere da M9 questi 9 numeri "nuovi" e poi sotto i precedenti numeri.

cioe' in fgl 2 potro' concellare da M9 tante celle quanti sono i nmeri in fgl 1 e nelle quali
andro ad inserire (sovrascrivere ) i nuovi 9 numeri... :D
sembrava facile.... :)
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: copiare solo celle piene

Postdi Flash30005 » 18/08/12 15:37

Avevo capito bene tutto ma mi sono fidato della sola condizione Inumeric che credevo non accettasse le celle vuote e invece copiava anche quelle vuote.
Quando mi sono accorto di questo ho modificato la macro aggiungendo una seconda condizione e l'ho postata ma evidentemente ti è sfuggito il post inviato qualche minuto prima del tuo :D

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: copiare solo celle piene

Postdi raimea » 18/08/12 16:49

:D tutto ok
non riuscivamo a sintonizzarci :lol:
con questo caldo non e' facile...
pensa che sono in montagna oltre 1000 Mt e fa caldo (anomalo atipico) pure qui.. 8)

questa la macro corretta che fa cio che cercavo:
Codice: Seleziona tutto
Sub copia()

Application.Calculation = xlManual

Set Ws1 = Worksheets("1-gol-Fogl.Base")
Set Ws2 = Worksheets("stamp-selez")

Inic = 9
For RR1 = 9 To 300
If IsNumeric(Ws1.Range("I" & RR1).Value) And Ws1.Range("I" & RR1).Value <> "" Then
Ws2.Range("M" & Inic).Value = Ws1.Range("I" & RR1).Value
Inic = Inic + 1
End If
Next RR1


Application.Calculation = xlCalculationAutomatic

End Sub

grazie ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: copiare solo celle piene

Postdi Flash30005 » 19/08/12 00:33

Per rendere più veloce l'esecuzione (se occorre)
puoi aggiungere un'altra riga di codice che blocca l'aggiornamento della schermata
Codice: Seleziona tutto
Application.Calculation = xlManual  '<<< inserita da te
Application.ScreenUpdating = False   '<<<< aggiungere
'... resto macro

alla fine macro
Codice: Seleziona tutto
Application.ScreenUpdating = True  '<<<< aggiungere
Application.Calculation = xlCalculationAutomatic '<<<< già inserita
End Sub



Ciao
P.s pensa, invece, che sono al livello del mare, senza essere al mare :cry:
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: copiare solo celle piene

Postdi raimea » 19/08/12 07:53

:lol:
tutto ok
grazie...
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "copiare solo celle piene":


Chi c’è in linea

Visitano il forum: Marius44 e 57 ospiti