Avatar billede zancir Nybegynder
07. december 2005 - 14:29 Der er 12 kommentarer

"Kolonner" i Excel?

Davs!

Jeg sidder PT. med en lang prisliste på godt 5000 produkter.

Denne prisliste skal jeg have omdannet til et priskatalog hvor man kan slå priser op. Jeg forestiller mig at der skal være 2 kolonner på hver side.

Den eneste måde jeg ved hvordan den slags kan gøres på er ved manuelt at rykke rundt på dataene, men det tager evigheder.

Er der nogen kvikke hoveder der ved om jeg kan markere alt indholdet og trykke på en "arrangér kolonner"-agtig knap somewhere, så den automatisk stiller det op i 2 kolonner, i en orden der logisk kan vises således:

1|2  - side 1
3|4  - side 2
5|6  - side 3
7|8  - side 4

..og IKKE således:

1|5  - side 1
2|6  - side 2
3|7  - side 3
4|8  - side 4

Giver det mening?

Jeg ved den funktion eksisterer i MS Word, men er ikke stødt på den i Excel.

Det ville afhjælpe mig for flere dages kedelig flytten data rundt i regnearket, så jeg gi'r maksimum point for et svar der fører til en løsning jeg kan bruge. ;)
Avatar billede supertekst Ekspert
07. december 2005 - 14:41 #1
Skal det være manuelt opslag eller automatisk - hvis sidstnævnte kan der skrives en søgefunktion via VBA eller også burde det overvejes om Access-løsning ikke var at foretrække.
Avatar billede zancir Nybegynder
07. december 2005 - 14:51 #2
Hmm.. Jeg er ikke helt sikker på hvad du mener.

Planen er, at selve excel-filen, når den er lavet om til et "priskatalog" bliver sendt til en trykker, der printer kataloget ud i papirform i A5 format.

Spørgsmålet går mest ud på om der findes en funktion der kan "re-arrangere" mine nuværende data så de kommer til at stå i 2 kolonner ved siden af hinanden, istedet for én lang.
Avatar billede supertekst Ekspert
07. december 2005 - 15:18 #3
Hvor meget fylder det nuværende i bredden - Fra - Til kolonner?
Avatar billede sjap Praktikant
07. december 2005 - 18:32 #4
Jeg tror ikke lige der findes nogen smarte funktioner som du kan bruge, men du kan rimligt nemt lave en liste i et tomt regneark.

Hvis du f.eks. har et ark med navnet Prisliste, der består af
  -  Kolonne A: Navne
  -  Kolonne B: Priser

så kan du lave et ny ark, hvor du i følgende celler skriver

A2: =INDIREKTE("Prisliste!A"&(RÆKKE(A2)-1)*2)
B2: =INDIREKTE("Prisliste!B"&(RÆKKE(A2)-1)*2)
C2: =INDIREKTE("Prisliste!A"&(RÆKKE(A2)*2-1))
D2: =INDIREKTE("Prisliste!B"&(RÆKKE(B2)*2-1))

Bagefter kan du så kopiere disse celler så langt ned som du har brug for.
Avatar billede zancir Nybegynder
08. december 2005 - 10:47 #5
Jeg har lidt problemer med at få dine koder til at fungere hensigtsmæssigt, Sjap. Den skriver #REFERENCE! i feltet, som jeg formoder er Excels standard meddelelse ved fejlbehæftede referencer.

Den burde ellers virke ligetil, da A2 feltet i "prislisten" er et 10-cifret varenummer der hverken skal omregnes eller noget.

Bortset fra det er de 4 koder de skriver temmelig langhårede. Hvad gør de, helt præcist?

@Supertekst

Oprindeligt er prislisten 3 kolonner bred. Artikel-nummer, varenavn og pris. Slutresultatet skal være 6 kolonner bred og kun halvt så lang.
Avatar billede sjap Praktikant
08. december 2005 - 11:18 #6
Du skal lige rette teksten Prisliste til navnet på det faneblad hvor du har den originale prisliste.
Avatar billede sjap Praktikant
08. december 2005 - 11:25 #7
INDIREKTE
er en funktion, der laver en tekststreng om til en reference. Dvs. i stedet for at opfatte f.eks. "Prisliste!A2" som en tekst, så opfattes det som en reference til celle A2 på fanebladet Prisliste.

"Prisliste!A"
er så navnet på det ark hvor du har den originale prisliste, og A er den første kolonne.

(RÆKKE(A2)-1)*2)
Er en beregning af hvilken række data skal hentes fra. Det kræver en beregning, da det jo kun er hver anden, der vises.
Avatar billede supertekst Ekspert
08. december 2005 - 12:00 #8
Kopier denne VBA-kode ind i ActiveWorkbook og start programmet - så er det klaret på 2 sek. Har prøvet med 1500 varenr.

Dim antalVnr
Sub workbook_activate()
Dim printV As Object, række1 As Integer, række2 As Integer, venstreFlag As Boolean
Dim vareNr, vareNavn, varePris
Rem henter fra p.t.-prisliste fra ark1 og opbygger print-venlige i ark2
Rem Overskrifter forventes i række 1

    ActiveWorkbook.Sheets("ark1").Activate
    antalVnr = ActiveCell.SpecialCells(xlLastCell).Row        'henter sidste celle m/indhold
    venstreFlag = True
   
    Set printV = CreateObject("Excel.Application")
    Set printV = ActiveWorkbook.Sheets("ark2")
    række2 = 2
   
    For række1 = 2 To antalVnr
        vareNr = Cells(række1, 1)
        vareNavn = Cells(række1, 2)
        varePris = Cells(række1, 3)
       
        With printV
            If venstreFlag = True Then
                Offset = 0
                venstreFlag = False
            Else
                Offset = 4
                venstreFlag = True
            End If
            .Cells(række2, 1 + Offset) = vareNr
            .Cells(række2, 2 + Offset) = vareNavn
            .Cells(række2, 3 + Offset) = varePris
           
            If venstreFlag = True Then
                række2 = række2 + 1
            End If
        End With
    Next række1
   
Rem Kolonnebredden tilpasses
    printV.Columns("A:G").AutoFit

    MsgBox ("Opbygningen af prisliste er afsluttet")
End Sub
Avatar billede supertekst Ekspert
08. december 2005 - 12:05 #9
Rettelse: Indlægges i ThisWorkBook i VBA
Avatar billede zancir Nybegynder
08. december 2005 - 13:03 #10
Wow, så gik der kode i den. Flot arbejde.

Jeg har et preliminært spørgsmål, dog. VBA og ThisWorkBook - er det programmer man skal installere ved siden af, eller følger de med i Excel/Office-pakken?
Avatar billede supertekst Ekspert
08. december 2005 - 13:48 #11
Nej - normalt er disse inkluderet. Når du ser på dit regneark - så tast ALT+F11 så åbner VBA-projektet. Mappen med navnet ThisWorkBook heri skal have ovenstående VBA-kode - VBA = Visual Basic for Applications - programmeringssprog til Office-pakken.
Avatar billede supertekst Ekspert
08. december 2005 - 13:58 #12
Hvis det kan være en hjælp - så send en mail til pb@skivehs.dk - så sender jeg min excel-fil m/VBA-koden.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester