Identifier les délais en double
Si vous voulez découvrir la ligne en double ayant plusieurs entrées pour la même personne et que vous voulez découvrir les entrées en double, alors vous ne devriez pas manquer cet article. Nous vous fournirons un code de macro pour vous aider à identifier les lignes en double. Dans cet article, nous allons apprendre comment trouver des lignes dupliquées en fonction d’une colonne particulière.
Question: J’ai une feuille de calcul avec plusieurs entrées horodatées pour les personnes. Ces personnes peuvent pointer à plusieurs endroits en même temps. Essayer d’écrire une formule ou une macro (je ne sais pas qui atteint le mieux l’objectif dans ce cas) qui recherchera les données et surlignera dans les lignes rouges avec des heures qui se chevauchent pour une personne spécifique. Est-ce possible et est-ce quelque chose que quelqu’un pourrait aider s’il vous plaît? Merci beaucoup.
La question originale peut être trouvée ici
Voici un instantané de la feuille avant:
Voici un instantané de la feuille après:
Pour obtenir le code; nous devons suivre les étapes ci-dessous pour lancer l’écran de l’éditeur Visual Basic Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic
-
Copiez le code ci-dessous dans le module 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
image: https: //www.office-skill.site/images/wp-content-uploads-2015-07-image-43.png [image 4, width = 624, height = 293] * Lorsque nous exécutons la macro, nous obtiendrons le résultat; voir ci-dessous la photo:
Explication du code:
Déclarez rng, cell, trng, tcell comme plage Lr as long * lr = Cells (Rows.Count, « A »). End (xlUp) .Row vérifiera la dernière ligne de la feuille courante.
-
Plage (« A2: H » & lr) .Interior.ColorIndex = xlNone; cela sélectionnera la plage allant de la cellule A2 à la colonne H jusqu’à la dernière ligne (A2: H5 sera sélectionné dans notre exemple) et garantira qu’aucune couleur n’est remplie.
Réglez rng = Range (« C2: C » & lr); la colonne C (ID de profil) sera stockée dans rng Pour chaque cellule In rng; maintenant, nous allons exécuter Pour chaque boucle dans rng, c’est-à-dire la colonne C Si Application.CountIf (Range (« C2 », cell), cell.Value)> 1 Then; cela vérifiera le nombre de fois que la valeur de la cellule est supérieure à 1; si trouvé supérieur à 1, alors Set trng = Range (« F2: F » & cell.Row – 1); maintenant nous allons définir la colonne F c’est-à-dire
IN time in trng * La prochaine fois, nous exécuterons For Each Loop dans trng et vérifierons s’il y a une ligne en double et la surlignerons en rouge si vous en trouvez une.
Conclusion: De cette façon, nous pouvons trouver des valeurs en double à l’aide du code de macro et les supprimer plus tard.
Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]