26. december 2002 - 20:33Der er
14 kommentarer og 1 løsning
Makro - fjern overflødigt
Jeg har siddet og forsøgt at lave en makro, der kan udføre noget tidrøvende og kedeligt arbejde, men jeg er bange for, det bliver lidt for kreativt, det jeg kommer frem til, så som uendelige løkker. Så jeg vil derfor gerne be om hjælp til makroen.
Jeg importerer oplysninger til et regneark som jeg efterfølgende gerne vil have fjernet alle overflødige informationer fra. Det kan dreje sig om fra 3 til 75 a4-sider information.
Jeg kan anvende koll A til at afgøre om RÆKKEN skal slettes.
Starter fra A1 og går ned til en celle med indholdet "Nummer" Rækkerne ud for alle disse celler samt 2-3 rækker yderligere, hvor cellerne er tomme, skal slettes.
'mærke'(se senere)
Herefter skal de efterfølgende rækker, hvor cellen har en værdi, gemmes.
Så skal der slettes rækker igen.
Det er sikkert, at den første af de næste celler er tom. Så kommer noget blandet landhandel men så igen kommer værdien "Nummer" samt nogle tomme celler. Ligesom tidligere. Disse rækker skal slettes.
Og så er fremgangsmåden den samme, fra ovenfor hvor jeg har skrevet 'mærke'.
Det ku måske også vises på denne måde hvor s = slettes, g = gemmes og x en identificerbar celleværdi:
txt s txt s tom s txt s "Nummer" s x tom s x - varierende antal, men altid tomme tom s x p203040 g 1234 g tom s x txt s "Nummer" s x tom s x - varierende antal, men altid tomme tom s x tom s x 23456 g... osv
Er der nogen der har lyst til lidt hjernegymnastik, vil jeg være meget taknemmelig for hjælpen. Jeg ved ikke hvor vanskeligt det er, men håber pointene passer nogenlunde.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Brynil-> At slette Nummer og tomme er et mindre problem, men det uidentificebare tekst er lidt sværere. Hvordan adskiller det sig fra fks. p203040 ? Er der tal i eller er det ren tekst ?
Når jeg kigger på cellerne efter de er pastet ind, så står de som Generel - mener jeg det hedder. Hvor de kommer fra, er de altid defineret som tekst, selv om det er 'tal'. Jeg havde håbet man ku undgå at beskæftige sig med dem af samme grund, og blot rykke nedad til næste tomme celle, for dem er der ingen af ind imellem de celler jeg skal bruge.
Jeg havde forestillet mig noget i stil med: 1. Select ned til Nummer samt efterfølgende tomme celler 2. Spring næste celle over hvis den har værdi hvis celle er tom så 3. Select ned til Nummer samt efterfølgende tomme celler osv. Men nok nemmere sagt end gjort !
brynil> Hvis du selv leger videre, så er det vigtigt, at du behandler rækkerne nedefra og op, når du skal slette rækker. F.eks. således for at slette "NUMMER"
Denne her skulle tage sig af "nummer" samt efterfølgende "tom"
Sub Demo() Dim lCount As Long
For lCount = Range("A65536").End(xlUp).Row To 1 Step -1 If IsNumeric(Cells(lCount, 1).Value) Then Cells(lCount, 1).EntireRow.Delete Do While Cells(lCount, 1).Value = "" Cells(lCount, 1).EntireRow.Delete Loop End If Next lCount End Sub
Imidlertid tager den ikke "nummer" med, men måske er det en fordel. Det der er tilbage nu, som skal fjernes, ligger i gentagne grupper som flg.:
'oversigt' --blandet-- 'nummer'
Hvordan kravler man ned/op i en kolonne, indtil man rammer et celle-indhold man kender, f.eks. "nummer"?
Jeg tænkte jeg ku komme frem til et loop, hvor jeg kravler ned! indtil jeg kommer til "oversigt". Gemmer cellereferencen i en variabelA kravler videre indtil jeg kommer til "nummer" Gemmer cellereferencen i en variabelB Sletter rækker(AB) loop
Kan det ikke lade sig gøre?
Hvis du kan fortælle mig, hvordan jeg 'spotter' cellen jeg har brug for, så tror jeg jeg er godt på vej!
Selvfølgelig sletter den "nummer". Når bare jeg husker at sætte værdien ind i makroen.!! Det må jeg ku bruge til det andet også! Takker så meget for hjælpen.
Godt - problematikken med slet er som enkel - når du evaluerer f.eks. række 3 og sletter den, så bliver række 4 nu til række 3, og da række 3 er blevet evalueret, så blive den "gamle" række 4 (ny række 3) altså sprunget over - derfor nedefra.
Ja-den tænkte jeg på. Derfor var jeg inde (med mig selv) på om det ikke kunne lade sig gøre kun at 'markere' hver række og så slette disse som det sidste i forløbet. Men da jeg hverken er stødt på metoden eller da bl.a. du ikke kom ind på det, regnede jeg med det ikke var en mulighed. Det kommer sig af, at det jo er muligt manuelt at markere enkelte rækker og slette dem samlet! Men det er alletiders det jeg har fået ud af det indtil nu. Det er meningen jeg skal bruge det i en access-db for at kunne styre henvendelser ol. så jeg er allerede i en ny kategori. Spændende!
Det kan godt lade sig gøre - det med markeringen, men så skal der oprettes et array, som hver række skal ind i - inden sletningen. Løsningen med at løbe posterne igennem bagfra er meget hurtigere når koden skal afvikles. Når nok om det - god fornøjelse.
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.