Jos haluat selvittää päällekkäisen rivin, jossa on useita merkintöjä samalle henkilölle, ja haluat selvittää päällekkäiset merkinnät, älä unohda tätä artikkelia. Tarjoamme makrokoodin, joka auttaa sinua tunnistamaan päällekkäiset rivit. Tässä artikkelissa opimme löytämään päällekkäiset rivit tietyn sarakkeen perusteella.
Kysymys: Minulla on laskentataulukko, jossa on useita aikaleimattuja merkintöjä ihmisille. Nämä ihmiset voivat kelloa sisään tai ulos useista paikoista samanaikaisesti. Yritetään kirjoittaa kaava tai makro (en ole varma, mikä saavuttaa tavoitteen parhaiten tässä tapauksessa), joka etsii tietoja ja korostaa punaisilla viivoilla tietyn henkilön päällekkäin. Onko tämä mahdollista ja voisiko joku auttaa? Paljon kiitoksia.
Alkuperäinen kysymys löytyy täältä
Seuraavassa on tilannevedos ennen taulukkoa:
Seuraavassa on tilannekuva jälkiarkin:
Koodin saaminen; meidän on noudatettava alla olevia ohjeita Visual Basic -editorinäytön käynnistämiseksi
- Napsauta Kehittäjä -välilehteä
- Valitse koodiryhmästä Visual Basic
- Kopioi alla oleva koodi vakiomoduuliin
Sub FindOverlapTime () Dim rng As Range, solu As Range, trng As Range, tcell As Range Dim lr Kuten Long lr = Solut (Rows.Count, "A"). End (xlUp) .Row Range ("A2: H" & lr) .Interior.ColorIndex = xlNone Aseta rng = Range ("C2: C" & lr) Jokaiselle solulle In rng If Application.CountIf (Range ("C2", cell), cell.Value)> 1 Aseta sitten trng = Alue ("F2: F" & solu.Rivi - 1) Jokaiselle t -solulle In trng Jos tcell.Offset (0, -3) = solu Sitten If (solu.Siirto (0, 3)> = tcell ja solu.Siirto (0, 3) = t -solu ja solu.Siirto (0, 4) <= tcell.Siirtymä (0, 1)) Sitten alue ("A" & solu.Rivi & ": H" & solu.Rivi). ColorIndex = 3 Lopeta, jos loppu, jos seuraava, t solu loppu, jos seuraava solu päättyy al
- Kun suoritamme makroa, saamme tuloksen; katso alla oleva kuva:
Koodin selitys:
- Ilmoita alueeksi rng, solu, trng, tcell
- Lr niin kauan
- lr = Solut (Rivien lukumäärä, "A"). Loppu (xlUp). Rivi tarkistaa nykyisen taulukon viimeisen rivin.
- Alue ("A2: H" & lr) .Interior.ColorIndex = xlNone; tämä valitsee alueen solusta A2 - H -sarakkeesta viimeiseen riviin (A2: H5 valitaan esimerkissämme) ja varmistaa, ettei väriä täytetä.
- Aseta rng = Alue ("C2: C" & lr); sarake C (Profiilitunnus) tallennetaan rng
- Jokaiselle solulle In rng; nyt suoritamme jokaiselle silmukalle rng eli sarakkeelle C
- Jos Application.CountIf (Alue ("C2", solu), solu.arvo)> 1 Sitten; tämä tarkistaa, kuinka monta kertaa solun arvo on suurempi kuin 1; jos havaitaan suurempi kuin 1, niin
- Aseta trng = Alue ("F2: F" & solu.Rivi - 1); nyt asetamme sarakkeen F eli IN -ajan trng: ssä
- Seuraavaksi suoritamme jokaiselle silmukalle trng: ssä ja tarkistamme, onko rivillä päällekkäisyyksiä, ja korostamme sen punaisella värillä, jos sellainen löytyy.
Johtopäätös: Tällä tavalla voimme löytää päällekkäisiä arvoja makrokoodin avulla ja poistaa ne myöhemmin.
Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse