Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    excel eliminare o visualizzare sequenze di numeri ......

    nella prima colonna ho una serie di numeri che sono uguali e consecutivi per 6 righe poi cambiano in altri 6 e cosi' via...a volte capita che ci sia "l'intruso" e cioe' una serie di numeri uguali e consecutivi diversa da sei....
    dato che sono decine di migliaia di serie....
    posso in qualche modo eliminare automaticamente le RIGHE intruse o quantomeno visualizzarle ?
    esempio pratico:
    ho questi numeri nella prima colonna,
    cio' che voglio ottenere e' eliminare o perlomeno visualizzare le righe che contengono il numero 2222222 ,queste righe non mi servono perche' si ripetono 5 volte,gli altri numeri si ripetono per 6 righe e quindi vanno bene....

    1111111
    1111111
    1111111
    1111111
    1111111
    1111111
    2222222
    2222222
    2222222
    2222222
    2222222
    3333333
    3333333
    3333333
    3333333
    3333333
    3333333
    4444444
    4444444
    4444444
    4444444
    4444444
    4444444

    grazie in anticipo....

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova così, su una copia del foglio.
    Per visualizzare le righe che vuoi eliminare.

    codice:
    Option Explicit
    
    Sub consecutivi()
    
    Dim ultima As Long, i As Long, scarto As Integer
    Dim cella As Range
    Dim inizio As String, fine As String
    
    
    On Error Resume Next
    Range("a:a").Interior.ColorIndex = 2
    
    ultima = Range("A65536").End(xlUp).Row
    
    For Each cella In Range("a1:a" & ultima + 1)
        If cella.Value = cella.Offset(-1, 0) Then
            i = i + 1
            Range("b" & cella.Row) = i
        Else
            i = 1
            Range("b" & cella.Row) = i
                If cella.Offset(-1, 1).Value < 6 Then
                    scarto = cella.Offset(-1, 1).Value
                    inizio = cella.Offset(-scarto, 0).Address
                    fine = cella.Offset(-1, 0).Address
                    Range(inizio & ":" & fine).Interior.ColorIndex = 6
                End If
        End If
    Next cella
    ultima = Range("b65536").End(xlUp).Row
    Cells(ultima, 1).EntireRow.Delete
    End Sub
    Nel caso le righe evidenziate siano quelle che ti aspettavi e le voglia rimuovere applica quest'altra sub.

    codice:
    Sub elimina()
    Dim ultima As Long, i As Long
    ultima = Range("A65536").End(xlUp).Row
    For i = ultima To 1 Step -1
        If Range("a" & i).Interior.ColorIndex = 6 Then
            Cells(i, 1).EntireRow.Delete
        End If
    Next i
    End Sub
    Non è il massimo della sciccheria ma fa il suo sporco dovere.

  3. #3
    amici cari ancora un piccolo aiutino.....
    allora...

    Sub trova6()
    conta = Application.WorksheetFunction.CountA(Range("a1:a65 000"))
    For i = 1 To conta
    valore = Range("a" & i)
    x = Application.WorksheetFunction.CountIf(Range("a1:a6 5000"), valore)
    If x < 6 Then
    Range("b" & i) = "6"
    End If
    Next i
    End Sub

    questa e' la macro originale e fa' il suo dovere...
    mi trova i 6 numeri uguali e mi scrive 6 nella colonna b

    mi serve pero' che contemporaneamente mi trovi anche 5 numeri uguali e che scrivi 5 sempre nella colonna b,in pratica questa:

    Sub trova5()
    conta = Application.WorksheetFunction.CountA(Range("a1:a65 000"))
    For i = 1 To conta
    valore = Range("a" & i)
    x = Application.WorksheetFunction.CountIf(Range("a1:a6 5000"), valore)
    If x < 5 Then
    Range("b" & i) = "5"
    End If
    Next i
    End Sub


    il problema e' che devo fare 2 passate con perdita di tempo,prima trovo i 6,poi lancio la macro ancora per trovare i 5....
    puo' la stessa macro con una passata sola evidenziarmi sia i "5" che i "6" ?
    ho provato e riuscito a collegare le due macro e ottengo in pratica una macro multipla che pero' comunque fa' due passate...
    vi prego aiutatemi .....

  4. #4
    Prova questa:

    Sub trova5e6()
    conta = Application.WorksheetFunction.CountA(Range("a1:a65 000"))
    For i = 1 To conta
    valore = Range("a" & i)
    x = Application.WorksheetFunction.CountIf(Range("a1:a6 5000"), valore)
    y=Application.WorksheetFunction.CountIf(Range("a1: a65000"), valore)
    If x < 6 Then
    Range("b" & i) = "6"
    End If
    If y < 5 Then
    Range("b" & i) = "5"
    End If
    Next i
    End Sub


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.