Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro excel: cercare dati in una matrice ed eliminare 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: cercare dati in una matrice ed eliminare righe

Postdi giuliad88 » 14/01/14 21:19

Ciao,
il mio problema è questo:
Ho una macro associata ad uno sheet che mi da come output una serie di numeri, mettiamo il caso che siano 2,3 e 5.
In un altro sheet ho una tabella dove nella prima colonna sono inseriti i numeri progressivi da 1 a 20, più una serie di altre colonne con altre informazioni.
Diciamo prima colonna "numero" (1,2,3....20)
Seconda colonna "nome" (Maria, Giulia, Marco,......)
Terza colonna "città" (Varese, Milano, Napoli....)
e così via.

Avrei bisogno di una macro VBA (di una macro per forza perché devo inserirlo in un determinato contesto di macro o.O) che prenda i tre numeri iniziali (2,3 e 5) vada in tabella, li riconosca nella prima colonna e cancelli tutte le righe della tabella che non li contengono.
In pratica mi deve restare una tabella di sole 3 righe.

Come posso fare?
Grazie a tutti!
giuliad88
Utente Junior
 
Post: 17
Iscritto il: 22/11/13 09:46

Sponsor
 

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi cd7019 » 14/01/14 23:19

EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi giuliad88 » 15/01/14 10:35

Ciao, si questo funziona, però sto cercando di mettere a posto una cosa perché non è detto che l'output della prima macro sia di 3 numeri. Potrebbero essere da 1 a 20. Quindi dovrei creare un vettore e scorrere il vettore fin quando trova un numero all'interno...
giuliad88
Utente Junior
 
Post: 17
Iscritto il: 22/11/13 09:46

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi cd7019 » 15/01/14 22:10

Lanciando la macro nasconde solo le righe non desiderate.
Per eliminare le righe attiva le ultime 3 righe (togli ' )

Codice: Seleziona tutto
For I = 24 To 5 Step -1
    If Rows(I).EntireRow.Hidden = True Then Rows(I).Delete
Next I


ciao.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi Anthony47 » 16/01/14 03:23

In aggiunta al suggerimento di cd7029 (vedi sopra), potresti ragionare su una macro come questa:
Codice: Seleziona tutto
Sub gd88()
Dim I As Long, myNums As String, myTab As String
'
myTab = "A1:D21"    '<< Intervallo della tabella dati; riga 1=Intestazioni
'
For I = Range(myTab).Rows.Count To 2 Step -1
    If IsError(Application.Match(Cells(I, "A").Value, myArr(), 0)) Then
        Cells(I, "A").EntireRow.Delete
    End If
Next I
End Sub

Presuppone che il vettore myArr sia popolato con gli N numeri (da un' altra macro?), e che ovviamente myArr sia "visibile" anche alla nostra macro (quindi o condivisa nel modulo, oppure Public).

Pero' io suggerirei di non distruggere i dati iniziali (come si farebbe eliminando le righe che non sono comprese nell' elenco), ma piuttosto di replicare in un secondo Foglio le righe che sono comprese nell' elenco; non solo e' piu' sicuro, ma e' anche piu' facile da testare.

Mi pare che non sei neofita, quindi questi pochi spunti potrebbero bastare; comunque ci trovi qui...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi Flash30005 » 16/01/14 03:24

Prova questa macro
Codice: Seleziona tutto
Sub EliminaRighe()
URD = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
URS = Worksheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row

For RRD = URD To 2 Step -1
    NumEl = Worksheets("Foglio2").Range("A" & RRD).Value
    For RRS = 2 To URS
    If NumEl = Worksheets("Foglio1").Range("B" & RRS).Value Then GoTo SaltaRRD
    Next RRS
    Worksheets("Foglio2").Rows(RRD).Delete
SaltaRRD:
Next RRD
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi giuliad88 » 20/01/14 11:55

Grazie mille!!
E se invece di eliminarli volessi momentaneamente nasconderli? Visto che una volta che la macro è andata in run non c'è modo di recuperarli..
giuliad88
Utente Junior
 
Post: 17
Iscritto il: 22/11/13 09:46

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi Flash30005 » 20/01/14 21:36

E perché, allora, non crearsi un altro foglio (Foglio3) nel quale utilizzarlo come foglio destinazione (e temporaneo)?
Quindi aggiungi "Foglio3"
e utilizza questa macro
Codice: Seleziona tutto
Sub CopiaRighe()
URD = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
URS = Worksheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
Worksheets("Foglio3").Cells.Clear
Worksheets("Foglio2").Range("A1:C1").Copy Destination:=Worksheets("Foglio3").Range("A1")
    For RRS = 2 To URS
        NumS = Worksheets("Foglio1").Range("B" & RRS).Value
        For RRD = 2 To URD
            NumEl = Worksheets("Foglio2").Range("A" & RRD).Value
            If NumEl = NumS Then
                URF = Worksheets("Foglio3").Range("B" & Rows.Count).End(xlUp).Row + 1
                Worksheets("Foglio2").Range("A" & RRD & ":C" & RRD).Copy Destination:=Worksheets("Foglio3").Range("A" & URF)
                GoTo SaltaRRD
            End If
        Next RRD
SaltaRRD:
    Next RRS
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro excel: cercare dati in una matrice ed eliminare ri

Postdi giuliad88 » 22/01/14 23:15

Si, mi sembra un ottima idea quella di creare un nuovo foglio. Grazie mille!
giuliad88
Utente Junior
 
Post: 17
Iscritto il: 22/11/13 09:46


Torna a Applicazioni Office Windows


Topic correlati a "Macro excel: cercare dati in una matrice ed eliminare righe":


Chi c’è in linea

Visitano il forum: cromagno e 7 ospiti