Avatar billede Kenneth31 Nybegynder
25. juni 2011 - 09:54 Der er 5 kommentarer og
1 løsning

Transponering i "grupper af 3"

Jeg har trukket en (laaang) liste med varenumre, som afleveres således i excel:

VareA  DKK-pris
VareA  EUR-pris
VareA  USD-pris
VareB  DKK-pris
VareB  EUR-pris
VareB  USD-pris
osv.

Har I nogen bud på, hvordan jeg kan omdanne denne opstilling, så hver vare har én række og hvor de 3 priser i stedet står i hver sin kolonne???

På forhånd tak

Kenneth
Avatar billede finb Ekspert
25. juni 2011 - 09:59 #1
følger tråden... mvh finb
Avatar billede finb Ekspert
25. juni 2011 - 10:56 #2
Brug enten array i vba, hvor du høster nedad med nyt indeksnr, hver gang du møder et nyt varenr.
(mit forslag)

Eller lad dig inspirere af simons foreslag:

=IF((((ROW()+3)/4)-INT((ROW()+3)/4))*4=0;INDIRECT(ADDRESS(INT((ROW()+3)/4);COLUMN();;;"Sheet1"));IF(AND((((ROW()+3)/4)-INT((ROW()+3)/4))*4=1;COLUMN()=1);INDIRECT(ADDRESS(INT((ROW()+3)/4);3;;;"Sheet1"));IF(AND((((ROW()+3)/4)-INT((ROW()+3)/4))*4=2;COLUMN()=1);INDIRECT(ADDRESS(INT((ROW()+3)/4);4;;;"Sheet1"));"")))

Indsæt formlen i celle A1 og celle B1 og træk nedad så lang du har brug for.

(= simons forslag, giv point til simon, find ham selv her, ved at søge på tekststrengen:
"Indsæt formlen i celle A1 og celle B1 og træk nedad så lang du har brug for."

Mvh finb
Avatar billede natkatten Mester
25. juni 2011 - 12:51 #3
Dette er en sag, som f.eks. Supertekst kan klare i løbet af ingen tid vha. et VBA-script ;-)

Men hvis du vil have en anden tilgang til løsningen, som ikke kræver VBA-programmering, så kan du også benytte dig af en kombination af Excels indbyggede filterfunktion (avanceret filtrering hvor kun de unikke værdier i kolonne A vises) samt en matriksformel, der bl.a. gør brug af INDEKS funktionen. Et eksempel kan ses i det her uploadede:

http://gupl.dk/62019/

Formelen skal rettes til afhængigt af hvor stort dit dataområde er.
Avatar billede Slettet bruger
25. juni 2011 - 17:40 #4
Med dine data i A1:Ax prøv at indsætte følgende i D1:
=HVIS(KOLONNE()-3>3;"";FORSKYDNING($A$1;RÆKKER($A$1:A1)*3-3+KOLONNER($A$1:A1)-1;))
Kopier til F1. Marker D1:F1 og kopier nedad efter behov.
Formlen returnerer 0 når værdierne i kolonne A er udtømt. Det lader sig vel også gøre formelmæssigt at undertrykke dette nul, hvis det er et problem.
Avatar billede Slettet bruger
25. juni 2011 - 18:01 #5
Hvis du vil undertrykke 0:
=HVIS(KOLONNER($D:D)+3*(RÆKKER($1:1)-1)>TÆLV($A:$A);"";HVIS(KOLONNE()-3>3;"";FORSKYDNING($A$1;RÆKKER($A$1:A1)*3-3+KOLONNER($A$1:A1)-1;)))
Avatar billede ExcelsPotentiale Praktikant
25. juni 2011 - 18:48 #6
Her et simpelt løsningsforslag, som måske passer dig bedre.

1)Kopi-past søjlen med priser, sådan at du har 3 identiske søjler med priser stående ved siden af hinanden. Lad os kalde søjlerne med priserne B, C og D.

2)I søjle C sletter du indholdet i den øverste celle og forskyder indholdet i søjle C en række op.

3)I søjle B sletter du indholdet i de to øverste celle og forskyder indholdet i søjle B to rækker op.

Dit ark vil herefter se ud som neden for.

Søjle A    Søjle B            Søjle C          Søjle D
VareA     DKK-pris1    EUR-pris2    USD-pris3
VareA     EUR-pris2    USD-pris3    DKK-pris4
VareA     USD-pris3    DKK-pris4    EUR-pris5
VareB     DKK-pris4    EUR-pris5    USD-pris6
VareB     EUR-pris5    USD-pris6   
VareB     USD-pris6       

4) Du markerer nu alle 4 søjler inkl. varenummerne og laver det om til en tabel. Brug: Indsæt/Tabel. Du har nu en tabel, hvor hver kolonneoverskrift har en knap med en lille trekant, som peger nedad.

5)Tabellen sorteres på søjle B, ved at trykke på knappen til højre for kolonneoverskriften. Klik på tekstfiltre/Indeholder og skriv at rækken skal indeholde DKK.

Du har nu den tabel, du ønskede.
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

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