abonnement bol.com Unibet Coolblue
pi_137623172


Welkom bij “Het grote Excel vragentopic” waar je terecht kan met vragen over Excel.

In dit topic is het de bedoeling dat we gericht vragen stellen en antwoorden geven op de gestelde vragen. Om alles zo goed mogelijk te laten verlopen zijn er een aantal regels.

Regels
1. Als je een vraag stelt, zet er dan bij welke versie van Excel je hebt en op welke taal hij ingesteld staat.
2. Zet macrocode tussen [ code ] tags
3. Als het “pseudo-code” is, vermeldt dit dan duidelijk
4. Er bestaan geen domme vragen, wel domme antwoorden. Als jouw antwoord niet gaat bijdragen, geef het antwoord dan niet.
5. Dit topic is geen “code-FEBO” waar je half opgewarmde code uit de muur trekt, het is de bedoeling dat je er zelf iets van leert.

Definities
Functie Een interne functie die bij Excel is geleverd.
UDF Een “user definded function”, een zelfgebouwde functie
Macro Een stuk code die opdrachten uitvoert, gebouwd in (meestal) de VBA editor
Add-In Een Excel workbook met VBA-code (of C#, C) die als .xla (of .xll) is opgeslagen, deze is als vaste plug-in in Excel te plaatsen.
Workbook Het excelbestand
Sheet of Worksheet Het tabblad
Form, Formulier, Userform Een Dialoogvenster in VBA gebouwd

Tips & Links
De help functie van excel of visual basic voor excel kan je een eind op weg helpen. (F1)

Het workbook met het FOK!-menu zoals in de banner weergegeven is hier te vinden. Dit menu is naar wens aan te passen. De icoontjes in het menu zijn hier allemaal weergegeven. In dit workbook zijn drie macro's aanwezig:
• Een printertool waarmee je uit meerdere workbooks sheets kan selecteren voor afdrukken
• Een power replace die termen kan wijzigen in meerdere workbooks tegelijk
• Een formule vertaler, de formule in de actieve cel wordt in het engels weergegeven. Je kan ook een engelse formule invoeren die dan in de actieve cel in de geldende taal wordt geplaatst.
De UDF is naar aanleiding van een vraag in topic #29. De functie kan worden aangeroepen door in een cel =FOK() te typen en dan op de Fx te klikken voor uitleg over de variabelen.

De VBA editor bereik je door ALT+F11 in te drukken. Vanaf Excel 2007 is de VBA editor lastiger te vinden. Op deze site wordt uitgelegd hoe je de editor kan activeren.

De interne functies zijn afhankelijk van welke taal jouw Excel draait. Op deze en deze site kun je de formules in verschillende talen vertalen.

Macro uitvoering optimaliseren
De meer uitgebreide macro's kunnen traag worden, ook kan het scherm flikkeren als gevolg van veel "select" acties. Deels kun je dit ondervangen door zo veel mogelijk select acties te vervangen door directe verwijzingen naar cells en deels door een macro-optimalisatie door te voeren. In de onderstaande code is een routine voor macro-optimalisatie en een routine om de optimalisatie weer uit te zetten weergegeven. In de voorbeeld sheet is een uitgebreide versie van MOA en MOU opgenomen.

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Bij macro's die een bepaalde, merkbare, tijd nodig hebben om hun werk te doen is het van belang de gebruiker een idee te geven van wat er gebeurt, zeker met macro-optimalisatie aan kan het lijken alsof Excel is vastgelopen. Je kan bijvoorbeeld de statusbar een waarde geven, met eventueel een percentage van de reeds uitgevoerde code.

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Password kwijt?
Soms heb je een worksheeet beveiligd met een password maar ben je die kwijt. Gelukkig is dat geen groot probleem want de interne beveiliging van Excel stelt niet heel veel voor.
Hier vind je meer info en een downloadbare macro die alle interne passwords verwijdert.

DISCLAIMER: Denk erom dat je met het breken van de beveiliging van een excelsheet mogelijk wet- of regelgeving overtreedt. Als de spreadsheet van jezelf is zou het geen probleem moeten zijn.
In andere gevallen: vraag toestemming aan de originele schrijver.
Bij twijfelgevallen: NIET DOEN



Mooi, grappig en cool
Een uitgebreide site met nuttige en minder nuttige excelsheetjes. Van kekke grafieken om je manager of leraar te betoveren via oscillogrammen en simulatoren tot pong voor als het weer een typische vrijdagmiddag is: Excelunusual

Verder
Alle vorige topics zijn hier terug te vinden.

Nieuw topic? Haal de OP uit de wiki
  dinsdag 11 maart 2014 @ 17:36:53 #2
62215 qu63
..de tijd drinkt..
pi_137623244
Toch jammer dat Excelunusual al 2 jaar geen updates meer heeft gedaan.. http://excelunusual.com/
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_137623247
Overigens ging het in mijn workbook om links naar heel heel heel veel andere workbooks. Een search -> replace om links weer goed te zetten ging m niet worden dus.

Uiteindelijk heb ik de links weer goed gekregen door de xlsx te renamen naar zip , uit te pakken, en dan met een scriptje alle inhoud van .rel files te veranderen naar de juiste link, en alles weer terug te zippen. Toen stond alles weer goed.

Overigens kwam het hier ook vooral voor na openen in andere excel dan waar het in gemaakt was
  woensdag 12 maart 2014 @ 08:35:16 #4
84430 kanovinnie
Wie dit leest is gek!
pi_137646605
Wij hebben een lijst waar we nummers voor documenten uit halen. Die lijst wordt door 3 personen gebruikt/aangevuld dus soms is hij in bezet. Voorheen zaten we met 2 personen en zag ik dat hij door de ander geopend was. Maar nu zie ik altijd de naam van de derde persoon (die er later bij gekomen is). Hoe kan dit? Want ook als de andere hem open heeft zie ik dus de naam van de derde.
Op dinsdag 25 augustus 2015 15:48 schreef Toekito het volgende:
de grootste schande van heel FOK! naast Fylax is Kano als mod.
pi_137659326
Even een vraagje, Ik probeer de meest voorkomende datum te vinden in een excel bestand maar op de een of andere reden krijg ik het niet voor mekaar.
Had dit geprobeerd maar dat werkte niet kreeg ik dit uit 41641.
Heb dit scriptje gebruikt:
=INDEX($B$2:$B$9275;VERGELIJKEN(MAX(AANTAL.ALS($A$1:$A$6;$A$1:$A$6));AANTAL.ALS($A$1:$A$6;$A$1:$A$6);0) )

De lijst is best flink en gaat van B:2 naar B:9275.

Ik moet dus eigenlijk dit krijgen:
2 Januari: 100
3 Januari: 80

Mag ook gewoon alleen de meeste zijn (Dus zonder alle datums) 2 Januari: 100 bijvoorbeeld.
  woensdag 12 maart 2014 @ 16:03:53 #6
85514 ralfie
!Yvan eht nioj
pi_137659569
@MineraalWater
41641 = 2 Jan 2014 (je moet getalsnotatie op 'datum' zetten)

@kanovinnie
Dit heeft met het onderliggende besturingssysteem te maken, niets met excel. Geen idee wat het probleem is trouwens
pi_137659598
quote:
0s.gif Op woensdag 12 maart 2014 16:03 schreef ralfie het volgende:
@MineraalWater
41641 = 2 Jan 2014 (je moet getalsnotatie op 'datum' zetten)

@kanovinnie
Dit heeft met het onderliggende besturingssysteem te maken, niets met excel. Geen idee wat het probleem is trouwens
Ah kijk aan thanks :)
pi_137681960
Lieve mensen, ik heb een Excel-document vol data gedownload waar ik wat analyses op los wil laten voor studie-doeleinden. Echter wordt in elke cel een punt i.p.v. komma gebruikt als afscheiding (vijf-en-half is dus genoteerd als 5.5 i.p.v. 5,5) waardoor ik geen berekeningen met de cellen kan maken (mijn versie van Excel herkent getallen met punten erin niet als getallen). Het handmatig één voor één aanpassen gaat uren duren en is bovendien foutgevoelig.

Is er wellicht een mogelijkheid om in één klap van alle punten komma's te maken? Bedankt. :)
pi_137682023
Ctrl-a en ctrl-h? :P

Weet je zeker dat je een Excel-document hebt gedownload en niet een CSV-bestand dat je probeert te openen in Excel? :)
pi_137682049
quote:
0s.gif Op donderdag 13 maart 2014 00:44 schreef sylvesterrr het volgende:
Ctrl-a en ctrl-h? :P

Weet je zeker dat je een Excel-document hebt gedownload en niet een CSV-bestand dat je probeert te openen in Excel? :)
Superawesome, dat werkt!! :D
pi_137687171
quote:
0s.gif Op donderdag 13 maart 2014 00:44 schreef sylvesterrr het volgende:
Ctrl-a en ctrl-h? :P

Weet je zeker dat je een Excel-document hebt gedownload en niet een CSV-bestand dat je probeert te openen in Excel? :)
En ik maar altijd ctrl+f en daarna alt+p doen :')

Verder kan het ook een verschil zijn tussen de internationale instelleningen van de data ja.
Vooral bij CSV is dit lastig, maar ik heb het ook gehad met andere programmas... (niet Excel)

Laad data in, voer een paar analyses uit, sla alles op, open het de dag erna en klopt er geen bal meer van mijn data... Verander je de internationale instellingen, lukt het wel, maar doet een ander deel van het programma het niet meer :')
pi_137693701
ik hoop dat jullie mij begrijpen.
We zitten hier vast met een formule en ben er nog niet uitgekomen.
Wij hebben de volgende formule:
1=INDIRECT("Map1!"&ADRES(KOLOM()+523;RIJ()+57))

Deze verwijst naar een percentage van personen die een bepaald antwoord hebben gekozen. Echter vallen er mensen uit (of zijn niet aanwezig geweest) waardoor de cel waar het percentage in staat een aantal rijen naar boven verplaatst. Hoe wij op dit moment de formule hebben opgeschreven zorgt er niet voor dat deze dat specifieke percentage naar een andere rij volgt.
Ik dacht eerst heel simpel dit te kunnen oplossen door de uitkomst van de ADRES funtie relatief te maken (is standaard absoluut), maar dat werkt natuurlijk niet.
Wat ik dus wil is dat die '523' met evenveel vermindert als het aantal rijen die het percentage naar boven opschuift. Die 523 moet dus in principe variabel worden.
Is er iemand die mijn vraag begrijpt en mij eventueel kan helpen?
I never think of the future - it comes soon enough. - Albert Einstein
  donderdag 13 maart 2014 @ 14:42:39 #13
346939 Janneke141
Green, green grass of home
pi_137693803
Het getal 523 vervangen door een AANTAL, AANTALARG of AANTAL.ALS-functie die het aantal aanwezige mensen telt?

(En er dan nog iets mee doet, +37 ofzo, zodat het precies op de goede rij uitkomt - maar dat is natuurlijk afhankelijk van de indeling van je bestand)
Opinion is the medium between knowledge and ignorance (Plato)
pi_137693854
quote:
0s.gif Op donderdag 13 maart 2014 14:42 schreef Janneke141 het volgende:
Het getal 523 vervangen door een AANTAL, AANTALARG of AANTAL.ALS-functie die het aantal aanwezige mensen telt?

(En er dan nog iets mee doet, +37 ofzo, zodat het precies op de goede rij uitkomt - maar dat is natuurlijk afhankelijk van de indeling van je bestand)
Oeh! dat is een goede! Ik ga er even mee spelen.
I never think of the future - it comes soon enough. - Albert Einstein
pi_137694964
quote:
0s.gif Op donderdag 13 maart 2014 14:42 schreef Janneke141 het volgende:
Het getal 523 vervangen door een AANTAL, AANTALARG of AANTAL.ALS-functie die het aantal aanwezige mensen telt?

(En er dan nog iets mee doet, +37 ofzo, zodat het precies op de goede rij uitkomt - maar dat is natuurlijk afhankelijk van de indeling van je bestand)
Zo zie je maar weer... Zit je je helemaal blind te staren naar de template, is het gewoon een simpele oplossing. :')
Bedankt, hij werkt! Heb meteen nog wat kleine schoonheidsfoutjes eruit kunnen halen die hierdoor naar boven kwamen drijven.
I never think of the future - it comes soon enough. - Albert Einstein
pi_137695443
quote:
0s.gif Op donderdag 6 maart 2014 00:47 schreef Janneke141 het volgende:

[..]

Je moet wel een beetje hobbyen, aangezien VERT.ZOEKEN helaas niet achterstevoren werkt. En het werkt, zoals gezegd, uitsluitend als je alleen unieke gegevens hebt (want anders weet Excel natuurlijk niet wie er nou gekozen moet worden voor B2 ofzo).

Even samenvatten: jouw lijstje gegevens heeft drie kolommen A, B en C.
In kolom D maak je de concat: in D1 komt dus =B1&C1. Als in B1 "A" stond en in C1 "1", dan staat er nu in D1 "A1".
In kolom E zet je de kopie van A (Dus in E1 komt =A1).

Dan gaan we naar je tablletje, zie plaatje: de letters en cijfers die je daar ziet geven aan naar welke coördinaten wordt gezocht.
[ afbeelding ]

In de geselecteerde cel zet je nu
=VERT.ZOEKEN($A2&B$1;Blad!$D$1:$E$16;2;ONWAAR),

waarbij Blad!$D$1:$E$16 moet verwijzen naar de hierboven gemaakte kolommen van je gegevensreeks.
Ik heb de afgelopen dagen flink gestoeid, maar kom er nog niet uit.

Ik heb op het eerste blad nu een aantal kolommen

Naam ........... Letter........... Getal..............Samenvoeging van deze
test ...............A................... 1......................A1
test2............. B....................3..................... B3
test3..............D....................2..................... D2
test4 ............ C................... 4......................C4
test5..............A....................1......................A1

Op de tweede bladzijde heb ik hetzelfde raster gemaakt als jij hebt, en nu wil ik dus in vak B2 zoals hij bij jou staat alle namen uit de kolom Naam hebben die bij samenvoeging A1 hebben staan. In dit geval zou hier nu dus het volgende in moeten staan:

test
test5

In de praktijk zullen dit er rond de twintig per vak zijn, dus zal ik ze moeten oprekken, maar is dat mogelijk?

[ Bericht 6% gewijzigd door Arnold_fan op 13-03-2014 15:58:41 ]
Dit is een grondig beargumenteerde post met veel toegevoegde waarde.
  donderdag 13 maart 2014 @ 20:08:30 #17
346939 Janneke141
Green, green grass of home
pi_137705728
In de tweede zin van mijn post stond dat het alleen maar werkt als je gegevens uniek zijn. Wat ze in jouw voorbeeld dus niet zijn.
Hier moet ik nog even over nadenken. Hoe zie je het voor je? test en test 5 in 1 cel? Onder elkaar? Hoe zou Excel moeten weten hoeveel A1-waarden er zijn?
Opinion is the medium between knowledge and ignorance (Plato)
pi_137707189
quote:
0s.gif Op donderdag 13 maart 2014 15:43 schreef Arnold_fan het volgende:

In de praktijk zullen dit er rond de twintig per vak zijn, dus zal ik ze moeten oprekken, maar is dat mogelijk?
Excel heeft standaard eigenlijk alleen de mogelijkheid op deze manier getallen bij elkaar op te tellen. Dus als je test en test5 getallen waren zoals 4 en 5, dan had Excel er wel 9 van kunnen maken.

Voor teksten samen te voegen zal je een stukje VBA moeten gebruiken. Zie bijvoorbeeld dit topic hoe zoiets zou moeten werken: http://www.mrexcel.com/fo(...)s-array-formula.html
  maandag 17 maart 2014 @ 13:49:39 #19
65252 Bart
Slecht voor de gezondheid
pi_137840748
Ik heb een lijst in de volgende vorm:
Kolom A | Kolom B
a 1-9-14
a 1-9-14
a 1-9-14
b 1-9-14
b 1-9-14
c 1-9-14
a 3-10-14
d 3-10-14
d 3-10-14

Maar dan wat langer met meer letters en meer data.

Nu heb ik een tabel nodig in de volgende vorm:
letter | 1-9-2014 | 3-10-2014
a | 3 | 1
b | 2 | 0
c | 1 | 0
d | 0 | 2

Dus welke letter komt hoe vaak voor per datum. Ik heb echt geen idee hoe ik dit moet aanpakken... Weet iemand welke formule ik hiervoor nodig heb?
I have the cape. I make the fucking Whoosh noise.
Op donderdag 12 juli 2012 19:56 schreef Lithia het volgende:
Ik durf hier niets over te zeggen. Bart is koning hier.
pi_137840891
quote:
0s.gif Op maandag 17 maart 2014 13:49 schreef Bart het volgende:
Ik heb een lijst in de volgende vorm:
Kolom A | Kolom B
a 1-9-14
a 1-9-14
a 1-9-14
b 1-9-14
b 1-9-14
c 1-9-14
a 3-10-14
d 3-10-14
d 3-10-14

Maar dan wat langer met meer letters en meer data.

Nu heb ik een tabel nodig in de volgende vorm:
letter | 1-9-2014 | 3-10-2014
a | 3 | 1
b | 2 | 0
c | 1 | 0
d | 0 | 2

Dus welke letter komt hoe vaak voor per datum. Ik heb echt geen idee hoe ik dit moet aanpakken... Weet iemand welke formule ik hiervoor nodig heb?
Ik denk dat je http://office.microsoft.c(...)als-HA010047494.aspx zoekt

Bijvoorbeeld AANTAL.ALS(A2:A5;[cel met zoekterm])
Ohh, you touch my tralalala
Mhh, my ding ding dong...
Naamtopic.
  maandag 17 maart 2014 @ 13:55:27 #21
65252 Bart
Slecht voor de gezondheid
pi_137840970
quote:
0s.gif Op maandag 17 maart 2014 13:53 schreef Pleasureman_Gunther het volgende:

[..]

Ik denk dat je http://office.microsoft.c(...)als-HP005209029.aspx zoekt

Bijvoorbeeld AANTAL.ALS(A2:A5;[cel met zoekterm])
Ja ik zat daar ook net naar te kijken, maar ik heb twee variabelen he... Als datum=x en letter=y dan aantal+1 zeg maar.
I have the cape. I make the fucking Whoosh noise.
Op donderdag 12 juli 2012 19:56 schreef Lithia het volgende:
Ik durf hier niets over te zeggen. Bart is koning hier.
pi_137840991
quote:
0s.gif Op maandag 17 maart 2014 13:55 schreef Bart het volgende:

[..]

Ja ik zat daar ook net naar te kijken, maar ik heb twee variabelen he... Als datum=x en letter=y dan aantal+1 zeg maar.
My bad. Ik bedoelde http://office.microsoft.c(...)als-HA010047494.aspx
Ohh, you touch my tralalala
Mhh, my ding ding dong...
Naamtopic.
  maandag 17 maart 2014 @ 13:57:13 #23
65252 Bart
Slecht voor de gezondheid
pi_137841030
quote:
Ah tnx, even kijken of het daarmee lukt :).
I have the cape. I make the fucking Whoosh noise.
Op donderdag 12 juli 2012 19:56 schreef Lithia het volgende:
Ik durf hier niets over te zeggen. Bart is koning hier.
  maandag 17 maart 2014 @ 13:58:02 #24
62215 qu63
..de tijd drinkt..
pi_137841065
quote:
0s.gif Op maandag 17 maart 2014 13:53 schreef Pleasureman_Gunther het volgende:

[..]

Ik denk dat je http://office.microsoft.c(...)als-HP005209029.aspx zoekt

Bijvoorbeeld AANTAL.ALS(A2:A5;[cel met zoekterm])
Behalve als er meerdere zoekvoorwaarden zijn (zoals in dit geval), dan moet je werken met aantallen.als(). Of de favoriet in deze reeks: somproduct() (maar die is wat ingewikkelder)

-edit- spuit 11 :P
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  maandag 17 maart 2014 @ 14:01:32 #25
249182 Holy_Goat
mhèèhèhè
pi_137841200
count [A] in sheet1.table1 where [A]='a' and [B] isdate '1-9-14'

Maarja, dat zit niet standaard in Excel.

Heb zelf een projectje draaien waar ik nog wel even aan bezig ben, noem het maar XQL. (Excel Query Language). Draait volledig in vba, en is bij grote hoeveelheden lookups nu ongeveer 2-10x sneller dan te bereiken met normale excel formules zoals sommen.als (met meerdere arumenten) en aantal.als.

Zou alleen nog mooi zijn als het ook een keer in een DLL gegoten kan worden als het een beetje stabiel werkt, maar daar heb ik nog nooit naar gekeken.
abonnement bol.com Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')