• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kolom kopieren naar rij

Status
Niet open voor verdere reacties.

martinikerlke

Gebruiker
Lid geworden
10 nov 2010
Berichten
7
Ik zit met de volgende vraag:

Vanuit een softwarepakket krijg ik een standaard output zoals in het voorbeeld in blad1 te zien is. Nu wil ik graag de datum en de waarden die bij de omzetgroepen staan automatisch kopiëren naar blad2. Alleen de datum, omzetgroepnaam en de waarde moet overgezet worden, zodat ik per dag 1 regel krijg met de waarden van de omzetgroepen erachter. Wie heeft hier een oplossing voor? (scriptje?)
 

Bijlagen

  • Omzet.xls
    17,5 KB · Weergaven: 65
Ik ben nog maar een newbie op het gebied van macro's. Ik weet dus niet waar ik moet beginnen. Heb al wel bij andere forumberichten gekeken hoe een kolom te kopieren naar een ander werkblad. it snap ik wel een beetje. Maar volgens mij zit de moeilijkheid in het omzetten van een kolom naar een rij.
 
somproduct

dit kan in ieder geval met de somproductformule (op werkblad 2).

ik heb een begin gemaakt met de formules.

de waarden zouden ook op werkblad 1 op te vragen zijn met een filter.

ik heb de waarden van patat via een filter laten zien.

de overige waarden kun je terugzetten door de filter uit te zetten. (klik op het driehoekje),

heb je hier vragen over, laat het gewoon even weten.
 

Bijlagen

  • Omzet (oeldere).xls
    32 KB · Weergaven: 44
Nee oeldere,
zo simpel is het niet.
Waar is bij jou bv. de milkshake gebleven die op 1 oktober bij nr. 8 staat ?
Uit blad2 van de vragensteller is af te leiden dat zij daar naast de datum telkens 22 kolommen wil met 21 (mogelijke) artikelen en een totaalkolom. Als op blad1 bij elke datum die artikelen dezelfde zouden zijn of in dezelfde volgorde zouden staan, dan zou er een eenvoudige oplossing mogelijk zijn met de functie transponeren. Maar nu dat niet het geval is, is een andere aanpak vereist (tenzij de vragensteller blad1 aanpast natuurlijk).
Terzijde: het gebruik van somproduct in veel rijen en kolommen, vertraagt de doorrekening van een blad enorm en het is daarbij niet denkbeeldig dat Excel vastloopt.
 
Ik heb een ander voorbeeld gestuurd van blad 1. Uit mijn softwarepakket kan ik ook deze data genereren. Dit is altijd een vaste opbouw. Ook als er geen omzetgegevens staan wordt de data weergegeven. Het aantal omzetgroepen staat nu altijd op 25 in dezelfde volgorde met dezelfde namen.
Ik kan alleen een selectie maken, welke dagen ik kan exporteren, bijvoorbeeld 10 dagen of een maand. Deze dagen zijn wel altijd aansluitend.

Is het nu makkelijker om tot een oplossing te komen?
 

Bijlagen

  • Test2.xls
    38,5 KB · Weergaven: 32
klassieke draaitabel
- eerst datums doorkopieren met een formule en alleen toepassen op lege cellen
- vervolgens draaitabelletje en "alle omzetgroepen" verbergen
 

Bijlagen

  • Omzet(1).xls
    32,5 KB · Weergaven: 44
@ Bart
Voor jou is dit misschien simpel, jij bent dan ook de koning van de draaitabellen :cool:
 
ik probeer iedereen enthousiast te maken voor deze tool, hij is razend snel en oneindig handig :love::love:
 
Ga naar blad2 en toets Ctrl-q
Let wel op dat er bij het begin van een nieuwe eenheid in de A-kolom op blad1 wel wat moet staan. Bij het begin van de eerste groep staat daar nu een vraagteken (in A2, waar je normaal een datum zou verwachten) en dat mag ook nog wel, maar als er niets staat, dan loopt het fout. De macro is nu eenmaal gebaseerd op wat je in blad1 hebt staan.
Anderen mogen de macro korter maken als ze zin hebben, maar dat zal voor de werking niet veel uitmaken.
Een oplossing met de functie Transponeren in het werkblad is overigens ook mogelijk.
 
Laatst bewerkt:
Wijzig deze regel
Code:
Sheets(2).Range(Cells(lr2, 2), Cells(lr2, 27)) = WorksheetFunction.Transpose(.Range(.Cells(x + 1, 5), .Cells(x + 26, 5)))
in deze
Code:
Sheets(2).Cells(lr2, 2).Resize(, 26) = WorksheetFunction.Transpose(.Range(.Cells(x + 1, 5), .Cells(x + 26, 5)))
dan ben je van de foutmelding af (en hij is wat korter ook :D)
 
als het toch met een macro moet, dan kan een variatie op dit http://www.worksheet.nl/forumexcel/...n-nieuw-tabblad-o-b-v-drie-mogelijkheden.html (#5). Die zal in ieder geval sneller zijn dan cel per cel schrijven.
De functie transponeren (zoals door mij gebruikt) kopieert NIET CEL PER CEL, maar kopieert per RANGE. Daar is die functie ook voor bedoeld.
Ik denk niet dat je de snelheid van de code op de website waarnaar je verwijst, hebt getest met mijn code. Als je dat wel zou doen, dan zou je merken dat mijn code zeker niet trager is.
 
wat kost er tijd in een code = schrijven ( en in mindere mate lezen ) naar je tabblad, dus iedere keer als je iets schrijft in de zin van "'Sheets(2).Range(Cells(lr2, 2), Cells(lr2, 27)) " dan zorgt dat voor een beetje ophoud, in het geval je iets kleins heb, stel 10 rijen, dan stelt dat niets voor, maar ik wil de uitdaging wel even aangaan met 1000 rijen.

Bovendien verslaat niemand de draaitabel in snelheid
 
Zit over de snelheid maar niet in. Heb nu 2500 regels in blad1 staan. Als ik nu op blad 2 de macro start, dan is het met het knipperen van de ogen al ingevuld.
Ik ben erg blij met de oplossingen die jullie me geboden hebben. Zal de macro eens uitdiepen om zelf ook het een en ander te leren. Alleen zelf nog een mooi tabelletje met kleurtjes proberen te fabriceren.
 
Bovendien verslaat niemand de draaitabel in snelheid
Ik heb m.b.t. een draaitabel toch niet iets anders beweerd? Ik heb die helemaal niet genoemd!
Voor eenzelfde probleem zijn meestal meerdere oplossingen mogelijk en het is goed dat die gepresenteerd worden, dan kan de vragensteller de voor hem meest wenselijke keuze maken. Zoals ik hierboven al schreef: een oplossing met de functie transponeren in het werkblad en een kortere macro dan de mijne, zijn ook mogelijk (en een andere macro ook). Een oplossing met een draaitabel stond hier al, dus daar hoefde ik niet meer naar te verwijzen.
 
Laatst bewerkt:
Zapatr: Ik heb geen foutmelding gekregen.
Vanuit de originele excel-sheet selecteer ik het gehele blad 1. Vervolgens open ik jou Excel-bestand en plak blad1 hierin. Blad2 selecteren en macro starten. Klaar!! :cool:

Trouwens ik gebruik MS Excel 2000, misschien zit daar het probleem met de foutmelding?
 
@ Zapatr
Als ik de macro draai vanuit Blad1 krijg je een foutmelding, met mijn regel is dit wel mogelijk.
@ martinikerlke
Wees voorzichtig met het gebruik van bladindexnummers in je code. Als je een blad verplaatst loopt alles in het honderd. Gebruik bij voorkeur de bladnaam (die kan echter ook gewijzigd worden). Beter nog is het gebruik van de codenaam v/h blad (in je VB-Editor de naam v/h blad die NIET tussen haakjes staat. Kanttekening hierbij is dat dit echter enkel gaat in standaardmodules, niet in bladmodules.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan