SPOILEROm 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.SPOILEROm 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 wikiIt's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
kleiner als in pixels of in kb's?quote:Op vrijdag 27 september 2013 10:39 schreef Cracka-ass het volgende:
Ik heb een behoorlijk hardnekkig probleem in Excel 2007. Ik importeer een afbeelding die ik gemaakt heb met photoshop. Vervolgens denkt Excel dat de afbeelding veel kleiner is dan elk ander programma (buiten de Office suite). Het betreft een PNG maar ook verschillende andere bestandsformaten gaan fout.
Iemand een idee hoe dit op te lossen is?
Als in pixels. Dat is een probleem omdat de afbeelding via VBA geïmporteerd wordt.quote:Op vrijdag 27 september 2013 13:44 schreef qu63 het volgende:
[..]
kleiner als in pixels of in kb's?
En wat is t probleem als de foto kleiner is?
Hmm, Excel zou er toch mee om moeten kunnen gaan: http://office.microsoft.c(...)use-HP005200499.aspxquote:Op vrijdag 27 september 2013 13:46 schreef Cracka-ass het volgende:
[..]
Als in pixels. Dat is een probleem omdat de afbeelding via VBA geïmporteerd wordt.
quote:Op vrijdag 27 september 2013 14:33 schreef LogiteX het volgende:
[ afbeelding ]
heb met Excel bovenstaande grafiek gemaakt, op de horizontale as staat de dag-maand. Nu wil ik dat het grafisch gezien wat duidelijker wordt wat de verschillende maanden zijn. Bijvoorbeeld middels een verticale streep tussen jan en feb (en feb en mrt, etc) of een andere kleur van het tekengebied boven elke maand. Dus wit voor alle even maanden en licht grijs voor alle oneven maanden.
Hoe los ik dit op?
1 2 3 4 5 6 7 | hulprij: =VERSCHUIVING($D$2;AFRONDEN.BOVEN((RIJ()-1)/3;1)-1;(RIJ()-1)-(AFRONDEN.BOVEN((RIJ()-1)/3;1)-1)*3-1) =OFFSET($D$2,CEILING((ROW()-1)/3,1)-1,(ROW()-1)-(CEILING((ROW()-1)/3,1)-1)*3-1) uniek Let op! Verschilt per rij! De $J$1:J1 wordt $J$1:J2 etc =ALS.FOUT(INDEX($I$2:$I$10;VERGELIJKEN(0;INDEX(AANTAL.ALS($J$1:J1;$I$2:$I$10);0;0);0));"") =IFERROR(INDEX($I$2:$I$10,MATCH(0,INDEX(COUNTIF($J$1:J1,$I$2:$I$10),0,0),0)),"") |
quote:Op zondag 29 september 2013 08:38 schreef Holy_Goat het volgende:
Leuk probleemmaar je weet van te voren natuurlijk niet hoe lang die lijst moet worden
mag het met een hulp kolom?
Hulpkolom magquote:Op zondag 29 september 2013 09:04 schreef Janneke141 het volgende:
Zijn het 500 records (van 10 kolommen) of kan er in iedere cel een uniek gegeven staan dat je wil hebben? En inderdaad, mag het met een hulpkolom?
Nietes. zijn precies hetzelfde. Wist niet welke versie hij gebruiktequote:Op zondag 29 september 2013 09:44 schreef snabbi het volgende:
@Holy
Je gebruikt engelse en nederlandse formules door elkaar.![]()
Doet inderdaad wat ie moet doen, alleen wordt de hulpkolom wel heel erg lang in mijn geval (500x10=5000 rijen lang)..quote:Op zondag 29 september 2013 09:21 schreef Holy_Goat het volgende:
Mhhh ik heb het geprobeerd met:
[ code verwijderd ]
En dat gaat op zich prima. Alleen is ook nog steeds behoorlijk processor intensief toen ik met grotere matrices ging uitproberen.
http://filedump.org/files/dD0N1380439245.html
zie file>>
Excel 2007, NL, zoals in dikgedrukte letters aan t begin van mijn post stondquote:Op zondag 29 september 2013 12:30 schreef Holy_Goat het volgende:
[..]
Nietes. zijn precies hetzelfde. Wist niet welke versie hij gebruikte
5000 random cellen die bij iedere update aangepast worden (=afronden(aselect()*10;0)) en dan de hulpkolom van 5000 rijen zorgden er in ieder geval voor dat ik Excel een kwartier niet kon gebruikenquote:Op maandag 30 september 2013 12:40 schreef Holy_Goat het volgende:
Als je het met minder CPU gefixt krijgt zonder UDF hoor ik het graag trouwens![]()
Altijd leuk
die dubbelen eruithalen kost gewoon veel cpu door de aantal.als of andere zoek optiesquote:Op maandag 30 september 2013 13:15 schreef PAAC het volgende:
Leuk probleem, alles in één kolom krijgen lukt makkelijk, nu nog dubbelen eruit halen... (eerst maar weer eens aan het werk trouwens)
1 2 3 4 5 6 7 | B2 = van getal... B3 = tot getal... KOL D =ASELECTTUSSEN($B$2;$B$3) KOL E =ALS(ALS.FOUT(VERGELIJKEN(D2;$D$1:D1;0);0)=0;0;1) KOL F =ALS(E2=0;D2;"") KOL G =ALS.FOUT(KLEINSTE($F$2:$F$3001;RIJ()-1);"") KOL H =ALS(G2>0;AANTAL.ALS($D$2:$D$3002;G2);"") |
1 2 3 4 5 6 7 | B2 = van getal... B3 = tot getal... KOL D =random tussen 2 getallen iets kiezen KOL E =hulpkolommetje, kijken of er VOOR deze cel al een keer dezelfde waarde is geweest. (gebruik vgl voor speed ipv aantal.als) KOL F =hulpkolommetje om kaf van koren te scheiden KOL G =sorteren! geeft achter elkaar de kleinste, 1 na kleinste, 2 na kleinste etc waarde (en dus uniek!) KOL H =kijken hoe vaak voorkomt (zwaarste nog) |
Mja, in mijn geval gaat het dus om de zoekwoorden die gebruikt worden om op de site te komen..quote:Op maandag 30 september 2013 15:17 schreef Holy_Goat het volgende:
Solved! Gaat nu weer sneller. (alleen lijkt het nu niet zo door de aselect procedure)
edit: mmmmm blijft nog steeds redelijk intensief als is het een stuk minder. Veel betere opties kan ik 123 niet bedenken nu
(..)
note2: kan alleen gebruikt worden met getallen. met tekst niet helaas want daar werkt min() niet op
quote:Op maandag 30 september 2013 16:47 schreef qu63 het volgende:
[..]
Mja, in mijn geval gaat het dus om de zoekwoorden die gebruikt worden om op de site te komen..
We puzzelen vrolijk verder
Waar zouden 1, 2 en 3 geplaatst moeten worden? Als je 1 in N1 plaatst krijg je een kringverwijzing, en als je em in N2 zet dan mist ie een keyword in mijn sample..quote:Op maandag 30 september 2013 20:30 schreef PAAC het volgende:
Het volgende lijkt redelijk snel te werken(sommatie van aantallen komt op 5000 neer).
Ik zet alleen de eerste cel neer en de rest kan gekopieerd worden.
Array A1: J500 = array met 5000 unieke waarden
Kolom N = tussenkolom met alle waarden in één kolom
Kolom M = tussenkolom met indices
Kolom O = kolom met Unieke waarden
Cell S = cell met aantal rijen (ofwel 500)
1. Zet alle kolommen in één grote kolom(N) met een lengte van 5000 rijen
=INDEX($A$1:$J$500;ALS(REST(AANTALARG($N$1:N1);$S$1)=0;$S$1;REST(AANTALARG($N$1:N1);$S$1));AFRONDEN.BOVEN(AANTALARG($N$1:N1)/$S$1;1))
2. Als de unieke string voor komt, dan voorgaande waarde, anders voorgaande waarde + 1
=ALS(AANTAL.ALS($N$2:N2;N2)>=2;M1;M1+1)
(Plaats deze links van de kolom met resultaten, door deze stap krijgt iedere unieke waarde zijn eigen unieke index(en dubbele waarden de index van de voorgaande waarde) welke opgezocht kan worden met vert.zoeken)
3. Zoek voor iedere index de eerste waarde
=VERT.ZOEKEN(AANTALARG($N$2:N2);$M$2:$N$5001;2;0)
(Aangezien de eerste index uniek is, wordt hierdoor automatisch de juiste waarde genomen en alleen unieke waarden in de kolom geplaatst)
Je hebt gelijk, vanochtend bedacht ik me al dat ik headers had gebruikt.quote:Op dinsdag 1 oktober 2013 02:43 schreef qu63 het volgende:
[..]
Waar zouden 1, 2 en 3 geplaatst moeten worden? Als je 1 in N1 plaatst krijg je een kringverwijzing, en als je em in N2 zet dan mist ie een keyword in mijn sample..
Kan je jouw sheet uploaden? Dan kan ik em zelf bewerken en dan weer uploaden om mijn aanpassingen te laten zien..
doe eens uploa-deeeenquote:Op dinsdag 1 oktober 2013 08:57 schreef PAAC het volgende:
[..]
Je hebt gelijk, vanochtend bedacht ik me al dat ik headers had gebruikt.
Ofwel N1 = header en N2 is begin van de kolom.
Als alsternatief kun je ook $A$1:A1 gebruiken bijvoorbeeld.
Moest toevallig nog even naar huis, anders was het vanavond pas geweestquote:
Dit lijkt te werken idd! Nog even verder puzzelenquote:Op dinsdag 1 oktober 2013 14:19 schreef PAAC het volgende:
[..]
Moest toevallig nog even naar huis, anders was het vanavond pas geweest![]()
http://filedump.org/files/KHEGGclr1380629920.html
Welke puzzelstukjes moeten er dan nog opgelost worden?quote:Op dinsdag 1 oktober 2013 14:28 schreef qu63 het volgende:
[..]
Dit lijkt te werken idd! Nog even verder puzzelen
Nou..quote:Op dinsdag 1 oktober 2013 14:32 schreef PAAC het volgende:
[..]
Welke puzzelstukjes moeten er dan nog opgelost worden?
Ahh, ik ging uit van een vooraf ingevuld blok met dataquote:Op dinsdag 1 oktober 2013 14:59 schreef qu63 het volgende:
[..]
Nou..
Het werkt, dat vooropgesteldHet werkt goed zelfs
Maar als er lege cellen in de matrix zitten dan is '0' ook een uniek resultaat en dan wordt de rij unieke resultaten onderbroken door een 0. Gelukkig gaat ie daarna wel weer verder
Daarnaast wordt de matrix verticaal uitgelezen terwijl ik em horizontaal invul. Dat zorgt er voor dat de lijst unieke resultaten anders opgebouwd wordt, iets waar ik met mijn verwerking rekening moet houden
Maar haske bedankt iig!
Nee, per ingevuld contactformulier vul ik de sheet verder in met de keywords die op t formulier staan.quote:Op dinsdag 1 oktober 2013 15:06 schreef PAAC het volgende:
[..]
Ahh, ik ging uit van een vooraf ingevuld blok met data![]()
Maar mooi dat het helpt.
Kun je m trouwens eens uitleggen? Vind em moeilijk te snappen. Snap je mijn 'methode' ook een beetje? Waarom zou mijn methode nog CPU vriendelijker zijn eigenlijk? (zo lijkt het nu)quote:Op maandag 30 september 2013 20:30 schreef PAAC het volgende:
Het volgende lijkt redelijk snel te werken(sommatie van aantallen komt op 5000 neer).
Ik zet alleen de eerste cel neer en de rest kan gekopieerd worden.
Array A1: J500 = array met 5000 unieke waarden
Kolom N = tussenkolom met alle waarden in één kolom
Kolom M = tussenkolom met indices
Kolom O = kolom met Unieke waarden
Cell S = cell met aantal rijen (ofwel 500)
1. Zet alle kolommen in één grote kolom(N) met een lengte van 5000 rijen
=INDEX($A$1:$J$500;ALS(REST(AANTALARG($N$1:N1);$S$1)=0;$S$1;REST(AANTALARG($N$1:N1);$S$1));AFRONDEN.BOVEN(AANTALARG($N$1:N1)/$S$1;1))
2. Als de unieke string voor komt, dan voorgaande waarde, anders voorgaande waarde + 1
=ALS(AANTAL.ALS($N$2:N2;N2)>=2;M1;M1+1)
(Plaats deze links van de kolom met resultaten, door deze stap krijgt iedere unieke waarde zijn eigen unieke index(en dubbele waarden de index van de voorgaande waarde) welke opgezocht kan worden met vert.zoeken)
3. Zoek voor iedere index de eerste waarde
=VERT.ZOEKEN(AANTALARG($N$2:N2);$M$2:$N$5001;2;0)
(Aangezien de eerste index uniek is, wordt hierdoor automatisch de juiste waarde genomen en alleen unieke waarden in de kolom geplaatst)
Jou methode bekijk ik vanavond waarschijnlijk (ben nu ook aan het werk namelijk).quote:Op dinsdag 1 oktober 2013 15:25 schreef Holy_Goat het volgende:
[..]
Kun je m trouwens eens uitleggen? Vind em moeilijk te snappen. Snap je mijn 'methode' ook een beetje? Waarom zou mijn methode nog CPU vriendelijker zijn eigenlijk? (zo lijkt het nu)
Hij is inderdaad schneller! Alleen je uitleg in kolom K klopt niet geloof ik, de functies die je daar noemt staan niet meer in E, F, G en H..quote:Op dinsdag 1 oktober 2013 15:16 schreef Holy_Goat het volgende:
Had ook nog een kleine aanpassing gemaakt aan mijn algoritme, toen ik wist dat het niet met getallen maar met tekst moestBenieuwd of dat ook ongeveer voldoet
http://www.uploadmb.com/dw.php?id=1380633186
uitleg klopt idd niet meer, had ik niet meer aangepast na aanpassingquote:Op dinsdag 1 oktober 2013 16:05 schreef qu63 het volgende:
[..]
Hij is inderdaad schneller! Alleen je uitleg in kolom K klopt niet geloof ik, de functies die je daar noemt staan niet meer in E, F, G en H..
Grappig ook dat jij =ALS(H2<>"";andere fomule;"") doet, ik draai t altijd om.. =ALS(H2="";"";andere formule)
Nu nog even kijken of ik jouw sheet kan combineren met die van PAAC
PS: Mooie lijst met 5letter-woorden!
Ah, het echte verschil zit em dus in 2. Ik begon eerst ook met 'unieke waarden' maar kwam er toen achter dat het me eigenlijk geen reet interesseerde of die uniek was, alleen maar of hij 'niet eerder' geweest was. Vervolgens de index als uitkomst noteren, en die weergeven in unieke lijst met verschuiving(kleinste(...;...)) , dus waar jij zoekt naar een ID zoek ik naar de kleinste waarde welke overeenkomt met een bepaalde plaats. En dan schijnt het dus voordelig te zijn om kleinste() te gebruiken boven vert.zoeken (die is langzamer). Sowieso, overal waar je kunt met 'index' e 'vergelijken' werken ipv vert.zoeken of horiz.zoeken. Is mss iets lastiger maar sowieso sneller omdat vert.zoeken achter de schermen meer doet dan de combi van index en vergelijken.quote:Op dinsdag 1 oktober 2013 15:52 schreef PAAC het volgende:
[..]
Jou methode bekijk ik vanavond waarschijnlijk (ben nu ook aan het werk namelijk).
Kort uitgelegd
1. Zet alles in één kolom (deze noem ik voor de makkelijkheid "DataKolom").
2. Zorg ervoor dat waarden in de DataKolom een uniek ID-nr krijgen(kolom moet links staan van DataKolom).
Als een waarde in de DataKolom meerdere keren voor komt(= niet meer uniek), dan krijgt deze de voorgaande ID-nr en wanneer deze voor de eerste keer voor komt(= nieuwe unieke waarde) wordt de ID-nr met één opgehoogd.
3. Zoek de unieke waarde op mbv de ID-nr's.
Wanneer een ID-nr in stap 2 verandert, betekend dit automatisch dat op dezelfde rij in de kolom ernaast een unieke waarde staat. Wanneer je dit opzoekt met vert.zoeken en "[benaderen] = 0", dan geeft ie de eerste waarde behorend bij de teller "AANTALARG($N$2:N2)".
Dus in de eerste rij van de unieke kolom zoekt ie naar ID-nr = 1, op de tweede rij zoekt ie ID-nr = 2 etc. Als er meerdere dezelfde ID-nr's zijn(zie stap 2), dan neemt hij door "[benaderen] = 0" de eerste rij van de meerdere waarden en geeft hierdoor dan automatisch een unieke waarde terug die ernaast staat.
Zeg, ik wil ook nog wat vrije tijd overhoudenquote:Op dinsdag 1 oktober 2013 16:17 schreef Holy_Goat het volgende:
Wat ik nog wel jammer vind an sich is dat we een hulp kolom nodig hebben om de N x M Matrix om te zetten naar een lange kolom met MxN items. Zou ook leuk zijn daar eens over te brainstormen
Sja. Is study evasive behavior hier. Maar wel interessantquote:Op dinsdag 1 oktober 2013 16:19 schreef PAAC het volgende:
[..]
Zeg, ik wil ook nog wat vrije tijd overhouden
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |