Condividi:        

EXCEL Eliminare celle mediante Macro

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 Eliminare celle mediante Macro

Postdi Geppo2011 » 02/09/11 00:12

Salve a tutti sono nuovo e poco esperto di computer e di forum quindi chiedo scusa già ora per qualche involontario errore.
Vorrei creare una macro che inserendo in una determinata cella un dato ,tutte le celle che contengono lo stesso dato e alcune vicine, presenti nello stesso foglio e anche in altri, vengano cancellate.
Faccio un esempio per chiarire:
se nella cella A1 del foglio CARICO inserisco il dato ZZZ , il quale oltre a essere presente nelle celle A10 e Z10 dello stesso foglio, è presente anche nella cella A10 del foglio SCARICO, questa macro dovrebbe eliminare le celle A10 e Z10 del foglio CARICO e anche le celle B 10 e AB 10 sempre del foglio CARICO e le celle A10 e B 10 del foglio SCARICO. Oltre a questo i dati presenti nelle righe successive dovrebbero andare a sostituire quelli cancellati.
La cosa è un po complicata da spiegare spero comunque di esserci riuscito.
Ringrazio quanti vorranno aiutarmi.
Ciao Giuseppe
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Sponsor
 

Re: EXCEL Eliminare celle mediante Macro

Postdi Flash30005 » 02/09/11 03:02

Benvenuto nel Forum, Geppo2011

Vorresti cancellare l'intera riga nel foglio "Scarico"?
o in ambedue i fogli?
Inoltre vuoi cancellare tutte le righe che contengono "ZZZ" in chiave parziale (es.: abracadabraZZZcancella, oppure nella cella c'è solo "ZZZ")?

Fai sapere e se puoi invia un file esempio con chiarimenti sul file
Per allegare un file devi effettuare almeno 3 post e utilizzare la prcedura indicato nel post all'inizio della sezione "Applicazione Office Windows"

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 Eliminare celle mediante Macro

Postdi Geppo2011 » 02/09/11 13:28

Ciao
Grazie per avermi contattato così rapidamente. A me interessa eliminare alcune celle in entrambi i fogli e non l'intera riga. Le celle da eliminare sono quelle che contengono un determinato dato (ZZZ) ,che è variabile,ed è presente in entrambi i fogli e alcune celle contigue che contengono delle formule.
Appena posso ti invio un file d'esempio.
Grazie e buona giornata
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Anthony47 » 03/09/11 18:58

Attendiamo quindi un file di esempio con i dati di partenza e i dati che vorresti ottenere; vedi qui per la procedura da seguire: viewtopic.php?f=26&t=80395
Per pubblicare il link dovrai prima avere almeno 3 post, puoi benissimo scriverne uno "a tema libero" per arrivare al numero.

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

Re: EXCEL Eliminare celle mediante Macro

Postdi Geppo2011 » 03/09/11 22:14

Ciao
Provvedo subito ad inviare un file d'esempio.
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Geppo2011 » 03/09/11 22:56

Ecco il file d'esempio.

https://rapidshare.com/files/674786469/ ... menti_.xls

La macro che vorrei creare dovrebbe agire così : inserendo un dato (AAA) nella cella A10 del foglio CARICO la macro dovrebbe eliminare, o meglio cancellare, il contenuto delle celle A13 B13 C13 e poi le celle da M13 a X13 del foglio CARICO e inoltre le celle da A13 a G 13 del foglio SCARICO. Una volta cancellate le celle i dati della riga successiva dovrebbero sostituire le celle vuote. Naturalmente il dato da eliminare varia di volta in volta.
Non so se sia possibile farlo.
Spero di avere caricato in maniera corretta il file. Se non fosse cosi fammi sapere.
Ciao e buona serata.
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Flash30005 » 04/09/11 01:21

Rapidshare, secondo me, ha cambiato metodo di download e se non sei iscritto sembra non faccia scaricare nulla
prova ad utilizzare Filedropper o Megaupload

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 Eliminare celle mediante Macro

Postdi Geppo2011 » 04/09/11 17:27

Non so come funzionava prima ma ieri mi sono iscritto e dopo aver caricato il file ho controllato ed era stato preso in carico, ho anche provato a scaricarlo e funziona tutto bene. Se vuoi lo carico su un altro sito fammi sapere.
Ciao
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Anthony47 » 05/09/11 00:52

Ho scaricato il file pero' non sono certo delle cose che devi fare...
Usando una macro come questa ottieni:
-viene cercata nel foglio Carico una sola volta la sigla impostata in A1, cercando sulle colonne A e H, righe 6-600
-se viene trovato una corrispondenza, vengono eliminate la cella con la sigla piu' le due celle adiacenti a destra; quindi sempre sulla stessa riga si eliminano le colonne M:X (se il dato e' stato trovato in col A) oppure le colonne AA:AB (se dato trovato in col H; vedi nota* successiva)
-indipendentemente se il dato e' presente o meno in Carico, si fa 1 (1 sola) ricerca su foglio Scarico, e se trovata una corrispondenza vengono eliminate le colonne A:G oppure I:O

"Eliminare le celle" comporta che tutte le celle sottostanti salgono su di una riga.

Nota*: le colonne da cancellare in quest' area (vedi l' istruzione marcata <<<) sono approssimate perche' non ne hai parlato; correggi l' istruzione se devi eliminare piu' o meno colonne, o eliminala se non devi eliminare niente in questo caso.

Il codice macro:
Codice: Seleziona tutto
Sub geppo()
With Sheets("Carico").Range("A5:A600, H6:H600")
    Set C = .Find(Sheets("Carico").Range("A1"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then
        CCol = C.Column: CRow = C.Row
        Cells(CRow, CCol).Range("A1:C1").Delete Shift:=xlUp
        If CCol = 1 Then Cells(CRow, CCol).Offset(0, 12).Range("A1:L1").Delete Shift:=xlUp
        If CCol = 8 Then Cells(CRow, CCol).Offset(0, 19).Range("A1:B1").Delete Shift:=xlUp  '<<< Vedi Testo
    End If
End With

With Sheets("Scarico").Range("A6:A600, I6:I600")
    Set C = .Find(Sheets("Carico").Range("A1"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then C.Range("A1:G1").Delete Shift:=xlUp
End With
End Sub
Da excel: Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx.

Eventualmente crea un pulsante su foglio Carico (trovi questa forma nella barra degli strumenti Moduli) e assegnagli la macro "geppo" (ti verra' fatta una domanda specifica nel ciclo di creazione del pulsante).
In questo modo potrai eseguire la macro al semplice premere del pulsante.

Rigorosamente da provare e collaudare SU UNA COPIA dei tuoi dati, comunque dopo aver fatto due copie di backup.

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

Re: EXCEL Eliminare celle mediante Macro

Postdi Geppo2011 » 05/09/11 22:21

MISSIONE COMPIUTA

La formula, fatte alcune piccole modifiche, FUNZIONA. Ho dovuto solo cambiare alcune celle ed eliminare un comando e tutto va al suo posto. La strada su cui mi hai indirizzato era quella giusta. Adesso cercherò di imparare il linguaggio VBA e di modificare le altre macro che ho creato.

Ti ringrazio infinitamente. A risentirci a presto.
Ciao Beppe
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Flash30005 » 06/09/11 01:07

Io continuo a non avere la possibilità o a non capire più come si scarica il file :roll:
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 Eliminare celle mediante Macro

Postdi Geppo2011 » 06/09/11 22:59

E' strano che non ti riesca di scaricare il file perché basta cliccare sul collegamento che ho postato e poi una volta aperta la pagina di RapidShare cliccare sul pulsante download indicato anche da una freccia.
Fammi sapere ciao buona serarta
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Flash30005 » 07/09/11 13:07

Allora spiego:
E' da qualche tempo che mi succede questo, precisamente, da quando Rapidshare ha modificato la pagina web.
Il tuo file si scarica con altri Browser che evito di installare perché windows si "sporca" già da solo senza che io dia ulteriore contributo :D
Molti utenti usano, anche dietro nostro consiglio, il server host in questione
quindi sapendo che il problema è tra Rapidshare e IE della Microsoft
Ho contattato l'assistenza di Rapidshare che ni ha chiarito l'inghippo:
la nuova interfaccia funziona con IE9 e altri browser ma non IE8 MS
Una prima esperienza fatta con IE9 è stata negativa pertanto evito per il momento di usare Rapidshare

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 Eliminare celle mediante Macro

Postdi Geppo2011 » 14/09/11 20:40

Ciao
Rieccomi in cerca d'aiuto.
Modificando la macro di Anthony47in questa maniera

Codice: Seleziona tutto
Sub geppo()
With Sheets("Carico").Range("A13:A600")
    Set C = .Find(Sheets("Carico").Range("A9"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then
        CCol = C.Column: CRow = C.Row
        Cells(CRow, CCol).Range("A1:C1, M1:X1").Delete Shift:=xlUp
    End If
End With

With Sheets("Scarico").Range("A13:A600")
    Set C = .Find(Sheets("Carico").Range("A9"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then C.Range("A1:H1").Delete Shift:=xlUp
End With
End Sub


ho ottenuto il risultato che volevo ovvero : inserendo un dato in cella A9 foglio Carico la macro cerca una corrispondenza nella colonna A e cancella la cella con il dato e le 2 celle alla destra della stessa riga ossia le celle delle colonne B e C, poi cancella le celle ,sempre della stessa riga ma nelle colonne da M a X. Passando poi al foglio Scarico cerca la corrispondenza con il dato della cella A9 foglio Carico e cancella le celle delle colonne da A a H.
Ora vorrei creare una macro nello stesso foglio che agisca nella stessa maniera ma in celle diverse. Ho provato a copiare la macro sostituendo le celle dovere operare ma non funziona . Quale altro dato devo cambiare?
Questa è la macro che ho creato

Codice: Seleziona tutto
Sub Rimuovi()
With Sheets("Carico").Range("H13:H100")
    Set C = .Find(Sheets("Carico").Range("H9"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then
        CCol = C.Column: CRow = C.Row
        Cells(CRow, CCol).Range("H1:J1, AA1:AL1").Delete Shift:=xlUp
    End If
End With

With Sheets("Scarico").Range("I13:I100")
    Set C = .Find(Sheets("Carico").Range("H9"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then C.Range("I1:N1").Delete Shift:=xlUp
End With
End Sub

Chiedo aiuto per la correzione. Grazie e buona serata
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Anthony47 » 15/09/11 00:16

Humm... per le magie suggerisco il forum su www.sorcery.com
Qui, avendo detto che la macro modificata non funziona senza dire pero' che cosa vorresti fare non possiamo fare molto (anzi, siccome parlo per me, "non posso fare molto"), se non chiederti di specificare "che cosa" vorresti fare.

Probabilmente pero' c' e' una cosa che non hai afferrato nel codice che usi:
una istruzione del tipo If Not C Is Nothing Then C.Range("A1:H1").Delete Shift:=xlUp lavora sulle celle A1:H1 ma "relative" alla cella trovata.
Quindi quando parti con
With Sheets("Carico").Range("H13:H100")
e poi usi
Cells(CRow, CCol).Range("H1:J1, AA1:AL1").Delete Shift:=xlUp
vuol dire che elimini le col O:P piu' altre ancora piu' a destra, visto che la cella trovata sara' in col H.
Se questo spunto non ti giova allora posta ancora con la risposta alla banale domanda fatta prima.

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

Re: EXCEL Eliminare celle mediante Macro

Postdi Geppo2011 » 15/09/11 12:42

Hai ragione su una cosa : non ho specificato cosa voglio fare con la macro . Su un'altra cosa ti devo contrariare: non è che non ho afferrato qualcosa sul codice inserito, IGNORO TOTALMENTE i codice delle macro!!! Chi ti scrive è un autodidatta del computer che si avvicina ora al misterioso mondo delle macro.
Scherzi a parte ti spiego, o almeno cerco di farlo, cosa vorrei realizzare.

Inserendo un dato nella cella H9 del foglio Carico si dovrebbe cercare una corrispondenza nella colonna H (righe da 13 a 100) trovata la corrispondenza cancellare la cella in col.H e le 2 calle alla destra (nelle col.I e J); poi cancellare le celle, della stessa riga, ma nelle col.da AA a AK. Passando poi al foglio Scarico cercare la corrispondenza del dato inserito in H9 (Foglio Carico)e cancellare le celle della riga dalla col. J alla col. O.
Spero che file d'esempio caricato il 03/09 possa esserti utile, altrimenti ti posto un nuovo file possibilmente più chiaro.
Non capisco inoltre perché usando un'istruzione come

If Not C Is Nothing Then C.Range("A1:H1").Delete Shift:=xlUp

partendo poi con

With Sheets("Carico").Range("H13:H100")
Cells(CRow, CCol).Range("H1:J1, AA1:AL1").Delete Shift:=xlUp

non vengono cancellatele celle in H e J e poi in AA e AL ma in O e P?

Spero di essere stato chiaro e di non pretendere l'impossibile.
Ciao e buona giornata
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08

Re: EXCEL Eliminare celle mediante Macro

Postdi Anthony47 » 15/09/11 15:08

Evviva la sincerita'...

Inserendo un dato nella cella H9 del foglio Carico si dovrebbe cercare una corrispondenza nella colonna H (righe da 13 a 100) trovata la corrispondenza cancellare la cella in col.H e le 2 calle alla destra (nelle col.I e J); poi cancellare le celle, della stessa riga, ma nelle col.da AA a AK.

Invece di Cells(CRow, CCol).Range("H1:J1, AA1:AL1").Delete Shift:=xlUp userai
Codice: Seleziona tutto
        C.Range("A1:C1, T1:AD1").Delete Shift:=xlUp


Passando poi al foglio Scarico cercare la corrispondenza del dato inserito in H9 (Foglio Carico)e cancellare le celle della riga dalla col. J alla col. O.
Immagino che il dato inserito in Carico-H9 lo devi cercare in I13:I100 di Scarico, cancellando poi le col J:O della riga.
Per questo, invece di If Not C Is Nothing Then C.Range("I1:N1").Delete Shift:=xlUp userai
Codice: Seleziona tutto
If Not C Is Nothing Then C.Range("B1:G1").Delete Shift:=xlUp


Non capisco inoltre perché usando un'istruzione come [. . . ]
With Sheets("Carico").Range("H13:H100")
'<<<<<< (istruzioni mancanti!)
Cells(CRow, CCol).Range("H1:J1, AA1:AL1").Delete Shift:=xlUp

non vengono cancellatele celle in H e J e poi in AA e AL ma in O e P?

Perche' la componente Range e' "relativa" alla cella in cui hai trovato una corrispondenza tramite la Find; e siccome esegui la Find nell' area H13:H100 troverai una cella appartenente a col H, es H22. Quale e' la cella "A1" relativa ad H22? E' H22. E quale e' la cella B1 sempre relativa ah H22? e' I22. E cosi' via

Guada nelle istruzioni che ti ho dato prima per vedere come ho applicato il concetto.

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

Re: EXCEL Eliminare celle mediante Macro

Postdi Geppo2011 » 15/09/11 23:14

Perfetto

Ho applicato i nuovi codici e tutto funziona ma soprattutto ho capito dove sbagliavo, anche se molto devo capire delle macro.
Grazie mille per il tuo aiuto.
Ho in cantiere altre macro, probabilmente ci risentiremo per suggerimenti o correzioni.
Ti ringrazio ancora e buona notte.
Geppo2011
Utente Junior
 
Post: 29
Iscritto il: 01/09/11 23:08


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Eliminare celle mediante Macro":


Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti