Buongiorno a tutti!
Ho fatto una ricerca nel forum, ed ho trovato un topic in cui si chiedeva come rimuovere le righe uguali in Excel, e dove l'utente icecube_HT ha postato il codice per la macro che effettua questa operazione:
il topic di riferimento è: http://forum.html.it/forum/showthrea...readid=1004792
il codice è:
codice:
Sub EliminaRigheDoppie()
Dim i&, j&, ULTIMA&, PRIMA&, COL%
COL = 1 'la colonna su cui eseguire il confronto
PRIMA = 1 'questa e' la riga da cui iniziare a cercare
i = PRIMA
Do 'ora cerca l'ultima riga significativa (cioe' <> "")
If Cells(i, COL) = "" Then ULTIMA = i - 1: Exit Do
i = i + 1
Loop
i = PRIMA 'confrontiamo questa riga....
Do
j = ULTIMA 'con tutte le successive, partendo dal fondo
Do
If Cells(i, COL) = Cells(j, COL) Then
'sono uguali, seleziona l'intera riga ed eliminala !
Rows(j).Select
Selection.Delete Shift:=xlUp
ULTIMA = ULTIMA - 1 'abbiamo eliminato una riga
End If
j = j - 1
Loop Until j <= i
i = i + 1
Loop Until i >= ULTIMA
End Sub
Ho provato il codice su un foglio di lavoro e funziona perfettamente.
Adesso però io dovrei modificarlo in questo modo:
invece di cancellare le righe il cui contenuto di una specifica cella è uguale, voglio cancellare le righe NON uguali a questa.
riga1: ciao
riga2: ciao
riga3: ciao
riga4: cane (cancella)
riga5: gatto (cancella)
riga6: gatto (cancella)
riga7: mare (cancella)
Il file excel contiene solitamente più di 300 righe.
Ho pensato che per fare ciò, bastasse modificare il codice sopra, cambiando questa riga:
codice:
If Cells(i, COL) = Cells(j, COL) Then
sostituendo al posto dell'uguale, il simbolo del diverso.. Il problema è che non so come fare il simbolo del diverso su VB e se questa è la soluzione, oppure è più complicata
Se si può risolvere il problema sopra, ovvero modificare il codice di modo che cancelli le righe non uguali, se ne presenta uno nuovo.
Il file di Excel in quesione, mi viene spedito precompilato da terze persone in modo alquanto approssimativo.
Il file è composto da diversi campi:
nome
cognome
indirizzo
codice
note
E' sul campo note che devo far agire lo script.
Devo tenere solo le righe che contengono la scritta "vedi allegato".
Il problema è che in questo campo posso trovare scritto:
- vedi allegato
- VEDI ALLEGATO
- codice 8755858 vedi allegato
- chissacosaltrohannoscritto vedi allegato
Come sottolineato da icecube, lo script è case sensitive, infatti mi riconosce o solo "vedi allegato" o "VEDI ALLEGATO" (a seconda della cella che imposto come riferimento)
Inoltre funziona solo se il contenuto è esattamente lo stesso, ovvero se non c'è altro testo presente oltre a "vedi allegato"
E' possibile modificare lo script in modo che mi riconosca ad esempio solo la parola "allegato" sia maiuscola che minuscola, tralasciando la presenza di altro testo?
Grazie