Identificare time frame duplicati
Se vuoi scoprire la riga duplicata con più voci per la stessa persona e vuoi scoprire le voci duplicate, non dovresti perdere questo articolo. Forniremo un codice macro per aiutarti a identificare le righe duplicate. In questo articolo, impareremo come trovare righe duplicate in base a una particolare colonna .
Domanda: ho un foglio di calcolo con più voci con data e ora per le persone. Queste persone possono timbrare in entrata o in uscita in più posti contemporaneamente. Cercando di scrivere una formula o una macro (non sono sicuro quale raggiunga lo scopo migliore in questo caso) che cercherà i dati e evidenzierà in linee rosse con i tempi che si sovrappongono per una persona specifica. È possibile ed è qualcosa che qualcuno potrebbe aiutare per favore? Grazie molto.
La domanda originale può essere trovata qui
Di seguito è l’istantanea del foglio precedente:
Di seguito è l’istantanea del foglio successivo:
Per ottenere il codice; dobbiamo seguire i passaggi seguenti per avviare la schermata dell’editor di Visual Basic Fare clic sulla scheda Sviluppatore Dal gruppo Codice, selezionare Visual Basic
-
Copia il codice seguente nel modulo standard
Sub FindOverlapTime() Dim rng As Range, cell As Range, trng As Range, tcell As Range Dim lr As Long lr = Cells(Rows.Count, "A").End(xlUp).Row Range("A2:H" & lr).Interior.ColorIndex = xlNone Set rng = Range("C2:C" & lr) For Each cell In rng If Application.CountIf(Range("C2", cell), cell.Value) > 1 Then Set trng = Range("F2:F" & cell.Row - 1) For Each tcell In trng If tcell.Offset(0, -3) = cell Then If (cell.Offset(0, 3) >= tcell And cell.Offset(0, 3) <= tcell.Offset(0, 1)) _ Or (cell.Offset(0, 4) >= tcell And cell.Offset(0, 4) <= tcell.Offset(0, 1)) Then Range("A" & cell.Row & ":H" & cell.Row).Interior.ColorIndex = 3 End If End If Next tcell End If Next cell End Sub
immagine: https: //www.office-skill.site/images/wp-content-uploads-2015-07-image-43.png [immagine 4, larghezza = 624, altezza = 293] * Mentre eseguiamo la macro, otterremo il risultato; fare riferimento all’istantanea sottostante:
Spiegazione del codice:
Dichiara rng, cell, trng, tcell come range Lr finché * lr = Cells (Rows.Count, “A”). End (xlUp) .Row controllerà l’ultima riga del foglio corrente.
-
Intervallo (“A2: H” & lr) .Interior.ColorIndex = xlNone; questo selezionerà l’intervallo dalla cella A2 alla colonna H fino all’ultima riga (A2: H5 verrà selezionato nel nostro esempio) e assicurerà che nessun colore sia riempito.
Imposta rng = Range (“C2: C” & lr); la colonna C (ID profili) verrà memorizzata in rng per ogni cella in rng; ora eseguiremo For each loop in rng, ad esempio colonna C If Application.CountIf (Range (“C2”, cell), cell.Value)> 1 Then; questo controllerà il numero di volte in cui il valore della cella è maggiore di 1; se trovato maggiore di 1, allora Set trng = Range (“F2: F” & cell.Row – 1); ora imposteremo la colonna F cioè
IN time in trng * Il prossimo eseguiremo For Each Loop in trng e controlliamo se c’è qualche riga duplicata ed evidenziamola con il colore rosso se ne trova una.
Conclusione: in questo modo, possiamo trovare valori duplicati utilizzando il codice macro e possiamo rimuoverli in seguito.
Se i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.
_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_