Identificazione di intervalli di tempo duplicati

Anonim

Se vuoi scoprire la riga duplicata con più voci per la stessa persona e vuoi scoprire le voci duplicate, allora 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 timestamp per le persone. Queste persone possono entrare o uscire in più posti contemporaneamente. Cercando di scrivere una formula o una macro (non sono sicuro quale raggiunga meglio l'obiettivo in questo caso) che cercherà i dati ed evidenzierà in linee rosse con tempi che si sovrappongono per una persona specifica. È possibile ed è qualcosa con cui qualcuno potrebbe aiutare per favore? Grazie molto.

La domanda originale può essere trovata qui

Di seguito è riportata l'istantanea del foglio precedente:

Di seguito è riportata l'istantanea di dopo il foglio:

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, seleziona Visual Basic

  • Copia il codice sottostante 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 Imposta rng = Range("C2:C" & lr) Per ogni cella In rng If Application.CountIf(Range("C2", cell), cell.Value) > 1 Quindi imposta trng = Range("F2:F" & cell.Row - 1) Per ogni tcell In trng If tcell.Offset(0, -3) = cell Then If (cell.Offset(0, 3) >= tcell And cell.Offset (0, 3) = tcell And cell.Offset(0, 4) <= tcell.Offset(0, 1)) Allora Range("A" & cell.Row & ":H" & cell.Row).Interior. ColorIndex = 3 End If End If Next tcell End If Next cell End Sub 

  • Quando eseguiamo la macro, otterremo il risultato; fare riferimento all'istantanea di seguito:

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 = xlNessuno; questo selezionerà l'intervallo a partire dalla cella A2 alla colonna H fino all'ultima riga (A2: H5 sarà selezionato nel nostro esempio) e assicurerà che nessun colore sia riempito.
  • Imposta rng = Intervallo ("C2: C" & lr); la colonna C (ID profili) verrà archiviata in rng
  • Per ogni cella In rng; ora eseguiremo For each loop in rng, ovvero la 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
  • Imposta trng = Range("F2:F" & cell.Riga - 1); ora imposteremo la colonna F cioè IN time in trng
  • Il prossimo eseguiremo For Each Loop in trng e controlleremo se ci sono righe duplicate ed evidenzieremo con il colore rosso se ne trovi una.

Conclusione: In questo modo, possiamo trovare valori duplicati utilizzando il codice macro e rimuoverli in seguito.

Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica