[EXCEL] VBA loop door kolom, haal data uit draaitabel

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • richardrmfc16
  • Registratie: April 2019
  • Laatst online: 17-08-2020
Goedemorgen,

Ik zit met het volgende brandende probleem. Ik heb in Excel een 'programma' gemaakt met 3 werkbladen. Met deze drie werkbladen wil ik productgegevens uit sheet A halen, verkoopgegevens uit de draaitabel van sheet 2 halen en deze gegevens automatisch laten analyseren in sheet 3. Omdat het zo'n groot bestand is, en alles in één keer laten berekenen niet werkt (duurt gigantisch lang), ben ik zaken los aan het trekken. Alles werkt nu uitstekend, alleen moet ik de verkoopgegevens nog kunnen ophalen..

Met een Macro moet ik door de codes uit kolom 2 van sheet 3 loopen. Deze codes komen overeen met de eerste kolom van het draaitabel. Vervolgens moet de bijbehorende omzet worden geplaatst -vanuit het draaitabel op sheet 2- in de analyse op sheet 3.

Als excel formule gebruikte ik hier de volgende formule voor:

=ALS.FOUT(DRAAITABEL.OPHALEN(+"Som van omzet excl";Draaitabel!$A$9;"szEan";TEKST($B5;0));"")

Deze trok ik vervolgens door voor alle rijen. Hoe krijg ik dit voor elkaar binnen VBA, inclusief de loop waardoor alle rijen worden meegenomen? ik krijg het maar niet voor elkaar.

Alvast héél erg bedankt! 8)

Gr,
Richard

Alle reacties


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Zoals je het nu vraagt, vraag je of iemand het helemaal voor je doet en dan is https://tweakers.net/aanbod/#highlightCat:892 eerder de aangewezen plaats ;)

We denken hier wel graag mee, maar dan graag wel op basis van eigen code. Waar loop je vast? Het is zowel ondoenlijk als gevaarlijk om andermans code over te nemen zonder te herkennen wat het doet. (Zeg ik omdat FOR(i,j) loops toch wel bekend moeten zijn voor je verder gaat met VBA).

Als het puur gaat om de performance: schakel evt automatisch herberekenen uit. Herbereken wanneer nodig. Sowieso is het bepaald geen zekerheid dat VBA sneller is dan 'native code'. Misschien kan je ook eerst kijken of opslaan als XLSB al voldoet (al helpt dat alleen bij openen/sluiten, niet berekenen). PowerQuery kan ook helpen qua performance, meen ik.

Of, overweeg een ander tool.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • richardrmfc16
  • Registratie: April 2019
  • Laatst online: 17-08-2020
-EDIT_

Ik ben alles nu aan het veranderen. Door middel van VBA zet ik nu gewoon de benodigde Excel formules in de juiste cellen. Werkt erg goed, en ben nu bijna klaar, ware het niet dat ik de draaitabel met geen mogelijkheid kan ophalen.

In vba moeten de Nederlandse excel formules naar het engels worden gezet (kwam ik later achter, evenals dat ';' een ',' moet zijn). Maar weet iemand hoe ik :

=Als.Fout(Draaitabel.ophalen(+"Som van omzet excl";Draaitabel!"$A$9";"szEan";Tekst($A8;0));"')

Vertaald krijg naar het engels :(

=iferror(getpivotdata(+"Som van omzet excl",Draaitabel!"$A$9,"szEan",Text($A8,0)),"")

Werkt bijvoorbeeld niet, evenals vele geprobeerde oplossingen :-(

[ Voor 79% gewijzigd door richardrmfc16 op 03-05-2019 16:02 ]


Acties:
  • 0 Henk 'm!

  • richardrmfc16
  • Registratie: April 2019
  • Laatst online: 17-08-2020
richardrmfc16 schreef op vrijdag 3 mei 2019 @ 14:09:
-EDIT_

Ik ben alles nu aan het veranderen. Door middel van VBA zet ik nu gewoon de benodigde Excel formules in de juiste cellen. Werkt erg goed, en ben nu bijna klaar, ware het niet dat ik de draaitabel met geen mogelijkheid kan ophalen.

In vba moeten de Nederlandse excel formules naar het engels worden gezet (kwam ik later achter, evenals dat ';' een ',' moet zijn). Maar weet iemand hoe ik :

=Als.Fout(Draaitabel.ophalen(+"Som van omzet excl";Draaitabel!"$A$9";"szEan";Tekst($A8;0));"')

Vertaald krijg naar het engels :(

=iferror(getpivotdata(+"Som van omzet excl",Draaitabel!"$A$9,"szEan",Text($A8,0)),"")

Werkt bijvoorbeeld niet, evenals vele geprobeerde oplossingen :-(
Iemand enig idee? Ik ben er nogsteeds niet uit :(

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 03:53

g0tanks

Moderator CSA
Heet je draaitabel wel 'Draaitabel'?

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • richardrmfc16
  • Registratie: April 2019
  • Laatst online: 17-08-2020
Jazeker! de namen zoals ik ze heb gebruikt kloppen allemaal
Pagina: 1