03. november 2001 - 12:30Der er
28 kommentarer og 1 løsning
Hjælp mig lige med at lave en løkke
Hej, Listen ligger i excel, består af fire kolonner. Kolonne 1 indeholder \"poster\" som kan forekomme flere gange, kunne være \"44OB24-Q\" eller i den stil. I kolonne 4 er der et status felt, som er forudindstillet til \"O\" for alle poster. Jeg skal gennemsøge listen for tilsvarende poster; er der mere end een, skal status ændres til \"R\" for alle pånær den sidst forekommende. Listeområdet er varierende i antal rækker, så når listen ikke er længere, dvs. \"\" i næste celle i kolonne A og statusfeltet er opdateret for posterne, skal koden afsluttes. (P.S. listen ligger i det samme regneark, som selve databasen, så den skal ikke \"kaldes\" nogen steder fra) Håber på en lidt smart løsning, for jeg kan godt lave koden selv, men den bliver bare kilometerlang, så hellere noget \"For each...next\" eller \"Do while...loop\" agtigt. God weekend til alle :o) Goodwill
goodwill>> Det eneste du skal sørge for er at starte makro\'en i det rigtige ark :-)
Sub ChangesStatusForDuplicatesInColumn() Dim rRange As Range Dim rDuplicates As Range Dim rDummy As Range Dim rCell As Range Dim iRow As Integer
iRow = Range(\"A64000\").End(xlUp).Row
Set rRange = Range(\"A1:A\" & iRow)
For Each rCell In rRange.Cells Set rDummy = Range(rRange(iRow, iRow), rCell) If Application.CountIf(rDummy, rCell.Value) > 1 Then If rDuplicates Is Nothing Then Set rDuplicates = rCell.Offset(0, 3) Else Set rDuplicates = Union(rDuplicates, rCell.Offset(0, 3)) End If End If Next rCell
rDuplicates.Value = \"R\"
Set rRange = Nothing Set rDuplicates = Nothing Set rDummy = Nothing Set rCell = Nothing End Sub
Kan jeg ikke samle de ikke-duplikerede i en Union også, og skrive \"O\" i sorry...tredie kolonne, i tilfælde af, at en manuel pilfinger har været inde og rette til \"R\" før tiden??
Problemet kan også løses uden makro med denne formel, som markerer alle dubletter undtaget den sidste med R: {=HVIS(ELLER(A1=A2:A100);\"R\";\"O\")} Dette er en arrayformel, altså formelen skal afsluttes ved at trykke ctrt-shift-enter, men i modsætning til de fleste andre arrayformler skal man ikke starte med at markere det område man vil fylde den ned i.
Derefter kopier man bare formlen nedad til sidste celle.
Hej bak, nu er det jo ellers løst, men vil da alligevel lige fortælle dig at første post får \"O\" resten \"R\" sådan for fuldstændighedens skyld ;o)) Goodwill
Jeg ved godt opgaven er løst, men derfor kan man jo godt prøve andre metoder. Man kan jo kun blive klogere. Min formel, hvis den bliver tastet rigtigt ind, vil give R ved de første redundante data og O ved sidste. Ved mig gør den tihvertifald :-)1 O 2 O 5 R 8 O 5 R 5 O 6 O
Det kan jo også være min version der kører kinesisk: 14B {=HVIS(ELLER(A1=A2:A6);\"R\";\"O\")} R 14B {=HVIS(ELLER(A2=A3:A7);\"R\";\"O\")} R 14B {=HVIS(ELLER(A3=A4:A8);\"R\";\"O\")} O 36C {=HVIS(ELLER(A4=A5:A9);\"R\";\"O\")} O 44A {=HVIS(ELLER(A5=A6:A10);\"R\";\"O\")} R 44A {=HVIS(ELLER(A6=A7:A11);\"R\";\"O\")} O
Altså : formlen checker kun nedad, derfor vil første forekomst af en dublet blive markeret med R og sidste forekomst med O, da den så ikke kan finde flere. Slut herfra, sengen trækker.
Hej begge to, Det kan jeg altså ikke få den til, har prøvet tre gange, akkurat samme formler, ctrl-shift-enter for array, og jeg får stadig \"O\" i den første post. Det må være en af de her ting, som bare ikke kan forklares, men tak bak, fordi du checkede igen. Jeg skal nok kunne bruge det til et eller andet. Fortsat god søndag, :o) Goodwill
Piiinligt, havde overset, at min liste havde kolonneoverskrifter. Så min formel {=hvis(eller(A1=A2:A6);\"R\";\"O\")} stod i række to. Skammer mig lige lidt.... :o) Goodwill
Hej Flemming, Jeg har lige en kommentar til koden ovenover, kan du give en forklaring, er jeg meget taknemmelig: Sætningen Set rDummy = Range(rRange(iRow, iRow), rCell) virker kun, hvis listen er 256 rækker eller derunder. Opdagede det, da jeg havde nogle stykker over 300, som skulle gennemkøres. ?? :o) Goodwill
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.