Ook dit geprobeert, de meerdere som.als bij elkaar optellen werkt!quote:Op donderdag 23 januari 2014 22:03 schreef Janneke141 het volgende:
Je hebt dus al een manier gevonden om (via een ander blad of weet ik wat) de rijen 4 en 5 vanaf kolom J te vullen?
Dan kun je ervoor kiezen om in K5, M5 etc. een SOM.ALS(B5:B20;J5;week)+SOM.ALS(C5:C20;J5;week)+SOM.ALS(D5:D20;J5;week) te zetten. Het is een beetje lomp (twee van de drie sommen zijn 0) maar het werkt, omdat de codes voor hoofd-, x-, en sub-afdelingen toch allemaal verschillend zijn. Scheelt een hoop gerommel.
-edit-
Volgens mij hoeft dit trouwens niet eens, maar dat moet je even uitproberen.
Als je in K5 het volgende zet:
=SOM.ALS(B5:D20;J5;week) moet het volgens mij ook goedkomen, maar dat moet je even uitproberen.
Mooi!quote:Op vrijdag 24 januari 2014 09:51 schreef Arliator het volgende:
Ook dit geprobeert, de meerdere som.als bij elkaar optellen werkt!
Krijg je een foutmelding of kloppen de getallen niet? Bij een foutmelding even backtracken, en als de getallen niet kloppen: bestaat de kans dat er in je lange lijst met gegevens toch ergens dubbele waarden zitten in twee verschillende kolommen?quote:De =SOM.ALS(B5:D20;J5;week) werkt in mijn voorbeeld wel, maar in het bestand waarin ik het daadwerkelijk moet gebruiken werkt het niet, waarom? Geen idee.
De getallen kloppen niet. Het is denk ik wel goed om even te checken of er geen dubbele waarden zitten in de twee verschillende kolommen, het zou niet moeten kunnen, maar niks is met zekerheid te zeggen tot het nagekeken is.quote:Op vrijdag 24 januari 2014 09:54 schreef Janneke141 het volgende:
[..]
Mooi!
[..]
Krijg je een foutmelding of kloppen de getallen niet? Bij een foutmelding even backtracken, en als de getallen niet kloppen: bestaat de kans dat er in je lange lijst met gegevens toch ergens dubbele waarden zitten in twee verschillende kolommen?
Dit zou moeten werken: http://office.microsoft.c(...)ues-HA001226038.aspxquote:Op vrijdag 24 januari 2014 14:36 schreef buishuis het volgende:
Ik zit al de hele dag op dit probleem, het zit zo:
Ik heb 2 kolommen met artikelcodes. In de linkerkolom komt iedere artikelcode maar 1x voor.
In de rechterkolom komen diezelfde artikelcodes soms wel meerdere keren voor maar met ieder andere gegevens in de kolommen daarachter. Nu wil ik die gegevens, achter de overeenkomende artikelcode in de linkerkolom zetten maar niet onder elkaar maar juist achter elkaar in 'n aparte kolom. Ik heb werkelijk geen idee hoe ik dit voor elkaar moet krijgen en met de hand doen is ook niet echt 'n pretje want het zijn totaal +-150.000 regels -_-" Alvast bedankt!
Probeer dit:quote:Op vrijdag 24 januari 2014 15:39 schreef buishuis het volgende:
Ik heb voor de duidelijkheid het voorbeeld even overgenomen om te kijken hoe het precies werkt
Gebruik je wel Ctrl+shift+enter?. Het is namelijk een matrix.quote:Op vrijdag 24 januari 2014 15:48 schreef buishuis het volgende:
Nee ook niet. Had ik al eens geprobeerd maar hij geeft wederom de foutmelding #WAARDE!
Er staat wel iets in de genoemde cellen? En deze formule staat in B10?quote:Op vrijdag 24 januari 2014 15:48 schreef buishuis het volgende:
Nee ook niet. Had ik al eens geprobeerd maar hij geeft wederom de foutmelding #WAARDE!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub Prime() Range("A:A").ClearContents Const zoekentot = 100 Dim filter(zoekentot) As Boolean 'priemcheck For I = 2 To zoekentot If filter(I) = False Then Range("A" & I) = I For J = I To zoekentot Step I filter(J) = True Next End If Next End Sub |
Het komt door de lege cel inderdaad bij de afdeling. Excel rekent daar met 0 ipv leeg. Als je onder afdeling ="" neer zet werkt het wel. Doe je het voor alle 'lege' cellen werkt het niet.quote:Op vrijdag 24 januari 2014 09:04 schreef Arliator het volgende:
[..]
Snabbi,
Dank je wel, ik heb het net geopend, ik snap je gedachtegang, maar het is nog niet helemaal goed, want als ik in jouw voorbeeld LG invul in B2, dan zie ik alleen maar nulwaardes, dat is dus niet de bedoeling.
Maar, ik zal kijken of ik hiermee verder kan.
quote:Op vrijdag 24 januari 2014 20:24 schreef Orealo het volgende:
Kan iemand mij deze code uitleggen?
Als output krijg je alle priemgetallen (tot 100) in je kolom A maar ik weet niet of het werkt zoals ik denk dat het werkt.
[ code verwijderd ]
De array wordt gezet op 1 tot 100
We beginnen bij 2 (I). De boolean zou true moeten zijn (mi) want 2 zit in de reeks 1 tot 100. Hier snap ik het niet meer want als ik de code stap voor stap uitvoer geeft VBA aan dat de boolean false is.
Als toch false:
Vervolgens wordt 2 weggeschreven op A2 en worden alle vermenigvuldigbare (met I) cijfers uit de array op true gezet.
Als de const bereikt is wordt I gelijk aan 3 en begint het circus opnieuw.
Waar maak ik mijn denkfout?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | Sub Prime() 'clearcontent dus de waarden verwijderen Range("A:A").ClearContents 'zoekentot = 100 Const zoekentot = 100 'aanmaken van een array met grootte 100 'alle waarden in de array zijn False Dim filter(zoekentot) As Boolean 'doorlopen van een loop van 2 tot 100 For I = 2 To zoekentot 'Bij de eerste keer dat de filter(2) wordt aangeroepen 'is filter(2) gelijk aan False. De if conditie is waar FALSE = FALSE is namelijk waar. 'dus de subcode wordt uitgevoerd. If filter(I) = False Then 'het resultaat dat 2 een priemgetal is weggeschreven wordt 'in je sheet verwerkt. Range("A" & I) = I 'let goed op dat hier STEP I staat. Dit houdt in met stapjes van I. Deze loop wordt voor 'de eerste keer doorlopen met J = 2, 4, 6, 8, 10 etc 'Op deze wijze wordt filter(4) alvast op True gezet net als 'filter(6) filter(8) allemaal true worden. For J = I To zoekentot Step I filter(J) = True 'ik heb hier even J bij gezet zodat je weet dat de volgende J is, niet I Next J End If 'na de eerste keer doorlopen van de loop met I, wordt nu I = 3 doorlopen. 'filter(3) is nog false, dus hij gaat je loop met i=3 doorlopen in de if. 'nu wordt filter(6) die al True was weer opnieuw true, maar ook filter(9) 'wordt True. Next I End Sub |
Wat een goede uitleg! Dankjewel!quote:Op vrijdag 24 januari 2014 21:21 schreef snabbi het volgende:
[..]
[ code verwijderd ]
De hele clue is natuurlijk dat wanneer je i=4 doorloopt dat je direct bij je IF al krijgt dat hij hem niet nog een keer hoeft te doorlopen, want je filter(4) is TRUE.
Elke keer wanneer je een priemgetal doorvoert, zal je code "For J = I To zoekentot Step I" er voor zorgen dat je
1x<je priemgetal>
2x<je priemgetal>
3x<je priemgetal>
etc TRUE word en dus dat die getallen geen priem zijn.
Het is een keuze van de programmeertaal. Bij het aanmaken van je Boolean array zijn alle waarden 0. In programmeren is 0 gelijk aan False en 1 aan True. Ze hadden er voor kunnen kiezen om bij het aanmaken alles op 1 te zetten, maar het is 'gewoon' aanmaken is 0.quote:Op vrijdag 24 januari 2014 21:29 schreef Orealo het volgende:
[..]
Wat een goede uitleg! Dankjewel!
Nog één vraag - waarom zijn alle waarden in de array False?
Of is dat gewoon een gegeven?
Helder. Thanks!quote:Op vrijdag 24 januari 2014 21:31 schreef snabbi het volgende:
[..]
Het is een keuze van de programmeertaal. Bij het aanmaken van je Boolean array zijn alle waarden 0. In programmeren is 0 gelijk aan False en 1 aan True. Ze hadden er voor kunnen kiezen om bij het aanmaken alles op 1 te zetten, maar het is 'gewoon' aanmaken is 0.
1 | http://speedy.sh/Pq7yv/TEST.xlsx |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Recept artikelcode Artikelcode Artikelcode 00021.14629 CC.2467004 CC.2467003 00021.14629 00021.46632 CC.2467003 EE.6959500 00021.14806 00021.1537 DD.6959515 #GETAL! 00021.15297 00021.14629 EE.6959502 #GETAL! 00021.1536 00021.53268 EE.6959500 #GETAL! 00021.1537 00021.60811 FF.18132401 #GETAL! 00021.15521 00021.60813 FF.A7202101 #GETAL! 00021.15522 00021.16079 BB.90210032 #GETAL! 00021.15523 00021.68019 BB.90210033 #GETAL! 00021.15960 00021.16079 GG.100066.005 #GETAL! 00021.15961 00021.15960 AA.9002104 #GETAL! 00021.16079 Gebruikte formule: =INDEX($A$2:$B$13000;KLEINSTE(ALS($A$2:$A$13000=$F$2;RIJ($A$2:$A$13000));RIJ(3:3));2) |
1 | =ALS(ISFOUT(INDEX($A$1:$B$13000;KLEINSTE(ALS($A$1:$A$13000=L3;RIJ($A$1:$A$13000));RIJ($1:$1));2));"";INDEX($A$1:$B$13000;KLEINSTE(ALS($A$1:$A$13000=L3;RIJ($A$1:$A$13000));RIJ($1:$1));2)) |
Dank je wel, ik was het weekend weg, dus kan nu pas antwoorden.quote:Op vrijdag 24 januari 2014 20:56 schreef snabbi het volgende:
[..]
Het komt door de lege cel inderdaad bij de afdeling. Excel rekent daar met 0 ipv leeg. Als je onder afdeling ="" neer zet werkt het wel. Doe je het voor alle 'lege' cellen werkt het niet.
Persoonlijk vind ik het wel vreemd om wel een subafdeling te hebben, maar niet een afdeling. Als je geen 'lege waarden' toestaat en altijd een naam hebt, dan werkt het. Het is niet een hele galante oplossing vanwege die foutmeldingen en zeker die subafdelingen maakt het lastig om dit generiek op te zetten.
De enige echte oplossing in mijn ogen is gebruik te maken van QUERY functionaliteiten, maar dat gaat ver boven de kennis van je collega's. Ook zou je je data dan niet in de weken naast elkaar moeten zetten, maar alles gewoon netjes in een eigen regel.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |