23. januar 2017 - 17:24Der er
3 kommentarer og 1 løsning
Få ens navne i kolonner "linet op" ud for hinanden
Hej Jeg har fire kolonner med varenavne. Mange af varenavnene er ens i alle fire kolonner, men der findes også unikke varenavne i hver kolonne. Jeg ønsker at få "strakt" kolonnerne, så - alt står alfabetisk, - ens varenavne står i samme linje. - unikke varenavne får en linje for sig.
Jeg så umiddelbart kun løsningen med at hånd-indsætte tomme celler i de rækker, hvor varenavnet ikke findes.
...Efter en times tid har jeg nået 500 linjer af 5000, og koncentrationen begynder at halte. Jeg tænker derfor at: "det må da være et kendt problem" - som måske har en simpel løsning
Jeg har en ide til hvordan det kan laves, men lige et par spørgsmål først. 1. I hvilket område står de 4 kolonner? 2. Er der et frit område hvor jeg kan smide resultatet? 3. Er der nogle af teksterne der går igen i flere linier, eller forekommer de maks 4 gange i samme linje? 4. Er der noget udenfor de 4 kolonner, som teksterne skall kobles sammen med?
1. De står i område A1-D4000 2. Resten af arket 3. Dubletter forekommer. Samme tekst kan forekomme 2-3-4 gange i en eller flere kolonner. 4. Nej, ingen kobling med andet.
Tja, den blev ikke så hurtig, men den ser ud til at virke. Det tog 5 til 6 minutter at køre makroen igennem med 4000 linjer, så det kan vel kun bruges, hvis det er en en-gangsforeteelse. Makroen smider data over i kolonne F:I. Hvis en tekst kommer mere end 4 gange fortsætter den ud i kolonne J og udefter. Den oprindelige tekst bliver slettet under kørslen.
Sub sorter() Dim c, d As Range Dim x As Integer x = 1 Range("A1:D4000").Select For Each d In Selection If d <> "" Then n = Application.CountIf(Range("A1:D4000"), d) - 1 Range(Cells(x, 6), Cells(x, 6 + n)) = d e = d x = x + 1 End If Range("A1:D4000").Select For Each c In Selection If c = e Then c.ClearContents End If Next Next End Sub
Med lidt kritik for at makroen 1. Sammenblander kolonnerne 2. Opbryder den oprindelige alfabetiske sortering af data,
Så kan jeg med en workaround hvor man først - processer alle fire kolonner og derefter - processer originalkolonnerne enkeltvis sammen med kolonne F fra "alle fire" - re.-sortere dette resultat alfabetisk efter kolonne F, - processer de samme to data-kolonner igen - håndklipper den resulterende kolonne G - gentager "og derefter processen" for de tre andre kolonner. Få et resultat næsten som jeg havde tænkt mig.
Eneste "skønhedsfejl" er at lodrette dubletter vises vandret. ...og den "fejl" tror jeg faktisk jeg bliver glad for, da dubletter nu er langt lettere at spotte.
Har kun kørt test m. 40 linjer i stedet for 4000, og der du'r det.
Går det som ventet, så reducerer jeg 10-15 timers "idiotarbejde" til 1-1½ times langt sjovere arbejde.
Præcis hvad jeg søgte efter. mange tak for hjælpen !!!
mvh :-) Teknik
Synes godt om
Ny brugerNybegynder
Din løsning...
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.