Condividi:        

macro excel per intervallo di righe

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

macro excel per intervallo di righe

Postdi frigobar » 28/11/12 23:57

Ciao a tutti,
premetto che sono davvero principiante nell'uso delle macro, e ringrazio tantissimo chi possa darmi un aiuto.
Ho excel 2003 e vorrei impostare una macro che selezioni e cancelli un intervallo di righe contenuto tra due righe "chiave" identificabili dal contenuto di una cella.
Ad esempio cancellare tutte le righe contenute tra quella in cui la cella E contiene il testo "message"
e quella in cui la cella E contiene il testo "subject".
Spero di essere stata comprensibile...
Grazie in anticipo!!!!
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Sponsor
 

Re: macro excel per intervallo di righe

Postdi ricky53 » 29/11/12 00:31

Ciao,
benvenuta nel nostro forum.

Domanda: la ripetitività del modulo è sempre:

varie celle
inizio con "message"
varie celle
chiusura con "subject"
varie celle
inizio con "message"
varie celle
chiusura con "subject"
varie celle
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: macro excel per intervallo di righe

Postdi Flash30005 » 29/11/12 01:03

Ciao Frigobar e benvenuta nel Forum

Inserisci questa macro in un modulo
Codice: Seleziona tutto
Sub EliminaTesto()
Area = "A1:IV100"   '<<<<< Area di lavro che puoi modificare
For NN = 1 To 3   '<<<<< se le stringhe sono più di 3 modifica questo numero adattandolo
    Select Case NN
    Case 1
    Nome = "message"
    Case 2
    Nome = "subject"
    Case 3
    Nome = "Quellochevuoi"    '<<<<< altra stringa da personalizzare
    End Select
    With Range(Area)
        Set C = .Find(Nome, LookIn:=xlValues)
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
            C.ClearContents
            Set C = .FindNext(C)
            On Error Resume Next
            Loop While Not C Is Nothing And C.Address <> firstAddress
            On Error GoTo 0
        End If
    End With
Next NN
End Sub


Nella Select ho inserito le stringhe "message" e "subject" ne puoi aggiungere altre aumentanto il ciclo For next (da 3 a x)

Attivi il foglio dove devi effettuare le cancellazioni
e avvii la 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-

Re: macro excel per intervallo di righe

Postdi Flash30005 » 29/11/12 01:25

ATTENZIONE!!!
Ho letto solo ora che devi eliminare l'intera riga (la macro cancella il contenuto delle celle) che se sono in E
puoi aggiungere queste quattro righe alla macro precedente prima dell'End Sub
Codice: Seleziona tutto
UR = Range("E" & Rows.Count).End(xlUp).Row  '<<<<< aggiungere
For RR = UR To 1 Step -1  '<<<<<<<<<<<<<<<<<<<<<<<< aggiungere
If Range("E" & RR).Value = "" Then Rows(RR).Delete   '<<<<< aggiungere
Next RR  '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<aggiungere
End Sub '<<<< esistente


Se i dati sono sparsi nell'area, invece usa questa macro
Codice: Seleziona tutto
Sub EliminaTesto2()
Area = "A1:IV100"
For NN = 1 To 3
    Select Case NN
    Case 1
    Nome = "message"
    Case 2
    Nome = "subject"
    Case 3
    Nome = "Quellochevuoi"
    End Select
    With Range(Area)
        Set C = .Find(Nome, LookIn:=xlValues)
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
            Riga = C.Row
            Rows(Riga).ClearContents
            Set C = .FindNext(C)
            On Error Resume Next
            Loop While Not C Is Nothing And C.Address <> firstAddress
            On Error GoTo 0
        End If
    End With
Next NN
UR = Range("E" & Rows.Count).End(xlUp).Row
For RR = UR To 1 Step -1
If Range("E" & RR).Value = "" Then Rows(RR).Delete
Next RR
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: macro excel per intervallo di righe

Postdi frigobar » 29/11/12 12:18

innanzitutto grazie mille!
Ho usato la tua macro Flash30005 però (non so se ho sbagliato io) mi ha cancellato solo le righe con il testo indicato mentre a me servirebbe una cosa del genere (utilizzo uno schema come quello suggerito da Ricky53):

riga
riga
riga
riga con testo "Message" nella casella e
riga
riga
riga

riga con testo "subject"nella casella e
riga
ecc

quelle in rosso sono quelle che vorrei cancellare,mantendo le righe con il testo..

E' un foglio molto complesso con 19757 righe e se non tolgo un po' di superflue non mi raccapezzo :cry:
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 29/11/12 13:35

Quindi se nella colonna E ci sono solo le stringhe "message" e "subject" (per solo intendo non all'interno di una frase)
puoi usare questa macro
Codice: Seleziona tutto
Sub EliminaRighe()
UR = Range("E" & Rows.Count).End(xlUp).Row
For RR1 = UR To 2 Step -1
    If UCase(Range("E" & RR1).Value) = "SUBJECT" Then
        RigaU = RR1 - 1
        For RR2 = RR1 - 1 To 1 Step -1
            If UCase(Range("E" & RR2).Value) = "MESSAGE" Then
                Rows(RR2 + 1 & ":" & RigaU).Delete
                RR1 = RR2
                GoTo saltaRR1
            End If
        Next RR2
    End If
saltaRR1:
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: macro excel per intervallo di righe

Postdi frigobar » 29/11/12 14:06

Mi dispiace non va :cry:

forse perchè la scritta effettiva della casella E è # Message: cross.jpg
e # Message: subject.jpg

quindi avevo impostato così

Sub EliminaRighe()
UR = Range("E" & Rows.Count).End(xlUp).Row
For RR1 = UR To 2 Step -1
If UCase(Range("E" & RR1).Value) = "# MESSAGE: SUBJECT.JPG" Then
RigaU = RR1 - 1
For RR2 = RR1 - 1 To 1 Step -1
If UCase(Range("E" & RR2).Value) = "# MESSAGE: CROSS.JPG" Then
Rows(RR2 + 1 & ":" & RigaU).Delete
RR1 = RR2
GoTo saltaRR1
End If
Next RR2
End If
saltaRR1:
Next RR1
End Sub

ma non succede niente...
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 29/11/12 14:40

non fai prima a inviare uno stralcio di foglio che contiene alcune di queste righe?

segui questa procedura

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: macro excel per intervallo di righe

Postdi frigobar » 29/11/12 17:12

http://rapidshare.com/files/3623954763/esempio.xls

ho incollato un pezzo del foglio..le parti che ho evidenziato in rosso sono quelle da eliminare e quelle in giallo i riferimenti che vorrei mantenere...grazie!!!
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 29/11/12 20:05

Come immaginavo....

La macro funziona ma le stringhe non sono nella colonna E ma colonna D
quindi ho modificato i riferimenti e le stringhe di ricerca
Codice: Seleziona tutto
Sub EliminaRighe()
UR = Range("D" & Rows.Count).End(xlUp).Row
For RR1 = UR To 2 Step -1
    If UCase(Range("D" & RR1).Value) = "# MESSAGE: SUBJECT.JPG" Then
        RigaU = RR1 - 1
        For RR2 = RR1 - 1 To 1 Step -1
            If UCase(Range("D" & RR2).Value) = "# MESSAGE: CROSS.JPG" Then
                Rows(RR2 + 1 & ":" & RigaU).Delete
                RR1 = RR2
                GoTo saltaRR1
            End If
        Next RR2
    End If
saltaRR1:
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: macro excel per intervallo di righe

Postdi frigobar » 29/11/12 21:04

Oddio è vero :oops: :oops: :oops: :oops:
Grazie infinite adesso si che funziona!!!!!!!
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi frigobar » 01/12/12 13:47

Di nuovo ciao a tutti!
Scusate se torno ad importunare, ma ho dovuto modificare il mio file e adesso ho due tipi di stringhe #Message:subject.jpg : #Message: subject-A
#Message: subject-B
Ho provato a cambiare semplicemente questa dicitura: If UCase(Range("D" & RR1).Value) = "# MESSAGE: SUBJECT.JPG"
Però se inserisco subject-A mi spariscono dal foglio anche tutte le stringhe con subject-B :roll:
Come si fa a ottenere lo stesso risultato di prima però con entrambe le stringhe??
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 01/12/12 14:31

Se usi come chiave "# MESSAGE: SUBJECT.JPG"
Non credo sparisca nulla in quanto non la trova visto che ora hai tre diverse tipologie di stringhe.

Ora però dovresti dare le specifiche
ovvero devono essere cancellate tutte le righe comprese tra "# MESSAGE: CROSS.JPG" e qualsiasi
"# MESSAGE: SUBJECT..." ?

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: macro excel per intervallo di righe

Postdi frigobar » 01/12/12 14:40

Si,devo eliminare tutte le righe tra qualsiasi "#message: subject" e la "#message:cross.jpg" successiva

Me le cancellava perchè io inserivo come chiave "#MESSAGE: SUBJECT-A.JPG" !
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 01/12/12 22:40

:roll:
Ma le devi cancellare in caso di SUBJECT-A o SUBJECT-B etc o no
potresti inviare di nuovo un file con un esempio (come hai fatto la volta scorsa)?

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: macro excel per intervallo di righe

Postdi frigobar » 02/12/12 01:11

https://rapidshare.com/files/3781863680/sample.xls

eccola!come prima le stringe incriminate sono evidenziate in giallo e le righe da cancellare in rosso..
In pratica, sia che la stinga dica Subject-a sia che dica subject-b o qualsiasi altro subject vorrei che i dati compresi tra questa riga e quella con la stringa cross successiva si cancellassero...
grazie ancora!
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi Flash30005 » 02/12/12 01:16

Il link è errato
(prova tu stessa)

dopo inviane un altro

Ma spiega anche se c'è un Message Cross
e dopo tre subject (uno A, uno B etc)
cosa va cancellato da Cross all'ultimo Subject?
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: macro excel per intervallo di righe

Postdi Flash30005 » 02/12/12 01:24

Perché se è come ho supposto nel messaggio precedente potresti usare questa macro
Codice: Seleziona tutto
Sub EliminaRighe2()
UR = Range("D" & Rows.Count).End(xlUp).Row
For RR1 = UR To 2 Step -1
    If Mid(UCase(Range("D" & RR1).Value), 1, 18) = "# MESSAGE: SUBJECT" Then
        RigaU = RR1 - 1
        For RR2 = RR1 - 1 To 1 Step -1
            If UCase(Range("D" & RR2).Value) = "# MESSAGE: CROSS.JPG" Then
                Rows(RR2 + 1 & ":" & RigaU).Delete
                RR1 = RR2
                GoTo saltaRR1
            End If
        Next RR2
    End If
saltaRR1:
Next RR1
End Sub


Questa elimina dal primo Cross all'ultimo Subject (qualsiasi esso sia)

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: macro excel per intervallo di righe

Postdi frigobar » 02/12/12 01:28

a me funziona il link... lo rimando..
https://rapidshare.com/files/3781863680/sample.xls

è così
riga
riga
riga
subject-a
riga
riga

cross
riga
riga
subject-b
riga
riga

cross
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Re: macro excel per intervallo di righe

Postdi frigobar » 02/12/12 01:36

Flash30005 ha scritto:Perché se è come ho supposto nel messaggio precedente potresti usare questa macro
Codice: Seleziona tutto
Sub EliminaRighe2()
UR = Range("D" & Rows.Count).End(xlUp).Row
For RR1 = UR To 2 Step -1
    If Mid(UCase(Range("D" & RR1).Value), 1, 18) = "# MESSAGE: SUBJECT" Then
        RigaU = RR1 - 1
        For RR2 = RR1 - 1 To 1 Step -1
            If UCase(Range("D" & RR2).Value) = "# MESSAGE: CROSS.JPG" Then
                Rows(RR2 + 1 & ":" & RigaU).Delete
                RR1 = RR2
                GoTo saltaRR1
            End If
        Next RR2
    End If
saltaRR1:
Next RR1
End Sub


Questa elimina dal primo Cross all'ultimo Subject (qualsiasi esso sia)

ciao


Ecco sarebbe al contrario... dal subject al cross... ho provato a modificarlo io ma come potrai immaginare non ci sono riuscita :roll:
frigobar
Utente Junior
 
Post: 16
Iscritto il: 28/11/12 23:30

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "macro excel per intervallo di righe":


Chi c’è in linea

Visitano il forum: Gianca532011 e 71 ospiti