Pasikartojančių laikotarpių nustatymas

Anonim

Jei norite sužinoti pasikartojančią eilutę, kurioje yra keli to paties asmens įrašai, ir norite sužinoti pasikartojančius įrašus, neturėtumėte praleisti šio straipsnio. Pateiksime makro kodą, kuris padės nustatyti pasikartojančias eilutes. Šiame straipsnyje sužinosime, kaip rasti pasikartojančias eilutes pagal konkretų stulpelį.

Klausimas: Turiu skaičiuoklę su keliais įrašais su laiko žymomis žmonėms. Šie žmonės vienu metu gali įeiti arba išeiti iš kelių vietų. Bandymas parašyti formulę ar makrokomandą (nesu tikras, kuri šiuo atveju geriausiai pasiekia tikslą), kuri ieškos duomenų ir paryškins raudonomis linijomis su konkrečiu asmeniu sutampančiais laikais. Ar tai įmanoma ir ar kas nors galėtų padėti? Didelis ačiū.

Originalų klausimą galite rasti čia

Žemiau yra prieš lapą esanti nuotrauka:

Toliau pateikiama lapo momentinė nuotrauka:

Norėdami gauti kodą; norėdami paleisti „Visual Basic“ redaktoriaus ekraną, turime atlikti toliau nurodytus veiksmus

  • Spustelėkite skirtuką Kūrėjas
  • Kodo grupėje pasirinkite „Visual Basic“

  • Nukopijuokite žemiau esantį kodą į standartinį modulį
Sub FindOverlapTime () Dim rng As Range, cell As Range, trng As Range, tcell As Range Dim lr As Long lr = Cells (Rows.Count, "A"). Pabaiga (xlUp). Eilučių diapazonas ("A2: H" & lr) .Interior.ColorIndex = xlNone = Diapazonas ("F2: F" & ląstelė. Eilutė - 1) Kiekvienam langeliui įeiti į trng Jei tcell.Offset (0, -3) = ląstelė Tada If (cell.Oset (0, 3)> = tcell and cell.Oset (0, 3) = tcell Ir ląstelė.Poilga (0, 4) <= tcell.Polyginis (0, 1)) Tada diapazonas ("A" & ląstelė.Eilė & ": H" ir ląstelė.Eilė). Vidinis. ColorIndex = 3 pabaiga, jei pabaiga, jei kita, t ląstelė pabaiga, jei kita ląstelė, pabaiga 

  • Vykdydami makrokomandą gausime rezultatą; žiūrėkite žemiau pateiktą momentinę nuotrauką:

Kodo paaiškinimas:

  • Kaip diapazoną paskelbkite rng, cell, trng, tcell
  • Lr kaip ilgai
  • lr = langeliai (eilutės. skaičius, "A"). pabaiga (xlUp). eilutė tikrins paskutinę dabartinio lapo eilutę.
  • Diapazonas ("A2: H" & lr) .Interior.ColorIndex = xlNone; taip bus pasirinktas diapazonas nuo langelio A2 iki H stulpelio iki paskutinės eilutės (mūsų pavyzdyje bus pasirinktas A2: H5) ir bus užtikrinta, kad spalva nebus užpildyta.
  • Nustatykite rng = Diapazonas ("C2: C" & lr); stulpelis C (profilio ID) bus saugomas rng
  • Kiekvienai langai In rng; dabar paleisime kiekvieną rng kilpą, ty C stulpelį
  • Jei Application.CountIf (Range ("C2", cell), cell.Value)> 1 Tada; tai patikrins, kiek kartų ląstelės vertė yra didesnė nei 1; jei jis yra didesnis nei 1, tada
  • Nustatykite trng = Range ("F2: F" & cell.Row - 1); dabar mes nustatysime F stulpelį, ty IN laiku trng
  • Toliau mes paleisime kiekvieną ciklą trng ir patikrinsime, ar nėra pasikartojančių eilučių, ir paryškinkite ją raudona spalva, jei ją radote.

Išvada: Tokiu būdu mes galime rasti pasikartojančias reikšmes naudodami makro kodą ir vėliau jas pašalinti.

Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el