Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di LA VALE
    Registrato dal
    Sep 2003
    Messaggi
    667

    [visual basic] Rimuovere righe in Excel

    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

  2. #2
    Utente di HTML.it L'avatar di LA VALE
    Registrato dal
    Sep 2003
    Messaggi
    667
    Per quanto riguarda il tipo di codice:

    utilizzo office 2003 e il visual basic in esso incorporato (per creare le macro)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.