Monthly Archives: February 2025

Export Range to HTML file

With the code below you can export values or formulas from a worksheet range to a HTML-file:

© erlandsendata.no

Example of a worksheet range with random data.

Result, the basic HTML table.

SOMPRODUCT met criterium

Je hebt een aantal artikelen die besteld worden door verschillende winkeliers. Je wil weten hoeveel de verkoop van 1 bepaald produkt heeft opgebracht. In dit voorbeeld: Tofu.

Formule in E4;

=SOMPRODUCT(–(A2:A23=E2);B2:B23:C2:C23)

Deze formule vermenigvuldigt kolom A met kolom met kolom en het resultaat optelt.

In feite krijg je dus:

Rij 5: 1 * € 18,60 * 9 = € 167,40
Rij 8: 1 * € 18,60 * 35 = € 651,00
Rij 14:1 * € 18,60 * 25 = € 465,00
Rij 21: 1 * € 18,60 * 21 = € 390,60
Totaal:                           € 1674,00

Maar hoe krijg je het voor elkaar dat alleen de rijen met “Tofu” worden berekend en wat doet die 1 eigenlijk? Daarvoor zorgt dit gedeelte:
– –(A2:A23=E2)


In kolom wordt gekeken welk produkt voldoet aan het criterium in cel E2 (Tofu). Normaliter krijg je dan een reeks van FALSE en/of TRUE. De twee minnen (– –) aan het begin zorgen er echter voor dat als Tofu gevonden wordt er een 1 (i. p. v. TRUE) wordt gegenereerd. Zoniet dan wordt een 0 (i.p.v. FALSE) gegenereerd.

Optellen alle aankopen van één klant

Klant BERGS heeft diverse producten gekocht. We willen het totaal berekenen door van al zijn gekochte producten het subtotaal (Kolom E) op te tellen.

Formule in G5.
=SUMPRODUCT(($A$2:$A$10=$G$2)*($E$2:$E$10))

In G2 kun je een validatielijst maken met alle namen van de klanten.

Gegevens | Gegevensvalidatie | Gegevensvalidatie | Toestaan > Lijst | Bron > (type in het vak ->) ALFKI;BERGS;FAMIA
Let op de puntkomma tussen de klantnamen.

Unieke lijst maken en één product uitsluiten

Je hebt een lijst waarin dubbele waarden voorkomen. Je wilt een lijst maken met unieke waarden maar één waarde wil je uitsluiten/negeren.

Formule C7

=IFERROR(INDEX($A$7:$A$28;SMALL(IF(FREQUENCY(IF($A$7:$A$28<>””;IF(1-ISNUMBER(SEARCH($B$4;$A$7:$A$28));MATCH($A$7:$A$28;$A$7:$A$28;0)));ROW($A$7:$A$28)-ROW($A$7)+1);ROW($A$7:$A$28)-ROW($A$7)+1);ROWS(C$7:C7)));””)

Dit is een zogenaamde array formule, invoeren met: Ctrl+Shift+EnterNIET alleen Enter. Als je dit goed hebt gedaan, plaatst Excel accolades om de formule { }. Let op: Plaats die accolades { } niet handmatig.

Let op: Plaats die accolades { } niet handmatig.
Doorvoeren naar beneden

Formule B3

=SUM(IF(FREQUENCY(IF($A$7:$A$28<>””;IF(1-ISNUMBER(SEARCH($B$4;$A$7:$A$28));MATCH($A$7:$A$28;$A$7:$A$28;0)));ROW($A$7:$A$28)-ROW($A$7)+1);1))

Dit is een zogenaamde array formule, invoeren met: Ctrl+Shift+EnterNIET alleen Enter. Als je dit goed hebt gedaan, plaatst Excel accolades om de formule { }. Let op: Plaats die accolades { } niet handmatig.

Let op: Plaats die accolades { } niet handmatig.

2 lijsten vergelijken

Je kent dat wel. Je hebt twee lijsten die gegevens bevatten. Nu wil je checken of de items in Lijst_2 voorkomen in Lijst_1. Als het lange lijsten zijn is dat een hels karwei. Bijvoorbeeld, komt “Drachenblut Delikatessen” voor in Lijst_1? Ja (TRUE). Komt “QUICK-Stop” voor in Lijst_1? Nee (FALSE).

Formule die je daarvoor kan gebruiken is simpel:

D1 =ISNUMBER(MATCH($B2;$A$2:$A$11;0))

Enter en doorvoeren naar beneden.

Wil je weten of een item NIET in Lijst_1 voorkomt dan gebruik je de formule:


E1 =ISNA(MATCH($B2;$A$2:$A$11;0))

Enter en doorvoeren naar beneden.

Webscrape voorbeeld

We gaan naar de website:
https://www.gameshop.nl/webshop/index.php

Om wat gegevens van computerspellen binnen te halen middels VBA-Code.

Voeg onderstaande code toe:

1. Kopieer de onderstaande code middels Ctrl + C
2. Druk op de toetscombinatie ALT + F11 om de Visual Basic Editor te openen
3. Druk op de toetscombinatie ALT + N om het menu Invoegen te openen
4. Druk op M om een standaard module in te voegen
5. Daar waar de cursor knippert voeg je de code in middels Ctrl + V
6. Druk op de toetscombinatie ALT + Q om terug te keren naar het Excel werkblad
7. Tenslotte ga naar View | Macros | View macros en kies je de juiste macro.

Je kunt de opgehaalde broncode van de webpagina loggen (vastleggen) in een tekstbestand ter referentie. In bovenstaande code staat deze zin:

‘LogInformation (HTMLdoc.body.innerHTML)

Haal de apostrof die aan het begin van de zin staat weg. Vervolgens onderstaande code toevoegen:

Zorg dat je het bestand textfile.html in de juiste directory hebt staan namelijk:
C:\temp\textfile.html
Telkens als je logt wordt eerst de inhoud van dat bestand verwijderd en vervolgens wordt er nieuwe tekst naar geschreven.

Unieke lijst genereren

Een dynamische lijst maken. Dit betekent dat, naar mate je de lijst uitbreidt en dus langer maakt, de lijst zich als het ware aanpast.

We hebben namen van landen in Kolom A. Sommige landen staan er dubbel in of zelfs driedubbel. In Kolom C willen we slechts unieke namen van landen.

Aan de slag. Zorg dat je gegevens hebt zoals in de afbeelding. Vervolgens dien je een aantal namen met daaraan gekoppeld formules te maken. Doe dat zoals hieronder beschreven:

Formulas > Name manager > New
Name: = RowVector
Refers to:

=ROW(Items)-ROW(INDEX(Items;1;1))+1

Klik: OK

Formulas > Name manager > New
Name: = Items
Refers to:

=Sheet1!$A$4:INDEX(Sheet1!$A$4:$A$20;Lrow)

Klik: OK

Formulas > Name manager > New
Name: = Lrow
Refers to: 

=MATCH(REPT(“z”;255);Sheet1!$A$4:$A$20)

Klik: OK

Tenslotte formules in de volgende cellen zetten:

Formule in C2

=SUM(IF(FREQUENCY(IF(1-(Items=””);MATCH(Items;Items;0));RowVector);1))

Dit is een zogenaamde array formule, invoeren met: Ctrl+Shift+EnterNIET alleen Enter. Als je dit goed hebt gedaan, plaatst Excel accolades om de formule { }. Let op: Plaats die accolades { } niet handmatig.

Let op: Plaats die accolades { } niet handmatig.

Formule in C4

=IF(ROWS($C$4:C4)<=$C$2;INDEX(Items;SMALL(IF(FREQUENCY(IF(1-(Items=””);MATCH(Items;Items;0));RowVector);RowVector);ROWS($C$4:C4)));””)

Ook dit is een zogenaamde array formule, invoeren met: Ctrl+Shift+EnterNIET alleen Enter. Als je dit goed hebt gedaan, plaatst Excel accolades om de formule { }. Let op: Plaats die accolades { } niet handmatig.

Let op: Plaats die accolades { } niet handmatig.
Doorvoeren naar beneden

Totalen berekenen, 2 criteria

Een paar winkels (Kolom A) hebben goede (of slechte) zaken gedaan en je ziet de resultaten per dag (Kolommen B:G in de afbeelding. De opgave dit keer is om de totalen (Kolom F) te berekenen. Er zijn 2 criteria namelijk, bedrag >= €5000 en de datum moet liggen tussen 2-9-2016 en 5-9-2016.

Formule in H8

=SUMIFS(B8:G8;$B$7:$G$7;”>=”&DATE(2016;9;2);$B$7:$G$7;”<=”&DATE(2016;9;5);B8:G8;”>”&5000)

Doorvoeren naar beneden.

Wie heeft het meest verkocht per maand/jaar

De vertegenwoordigers hebben weer eens goed hun best gedaan maar wie heeft het meeste verkocht per maand en wie is de topverkoper van het jaar?

Formule in F2

Dit is een zogenaamde array formule, invoeren met: Ctrl+Shift+EnterNIET alleen Enter. Als je dit goed hebt gedaan, plaatst Excel accolades om de formule { }. Let op: Plaats die accolades { } niet handmatig.

Let op: Plaats die accolades { } niet handmatig.

Doorvoeren naar beneden

=IFERROR(INDEX($B$1:$E$1;SMALL(IF($B2:$E2=MAX($B2:$E2);COLUMN($B$1:$E$1)-COLUMN($B$1)+1);COLUMNS($F2:F2)));””)