Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: som en aantal (gespreid?)  (gelezen 8158 keer)

0 leden en 1 gast bekijken dit topic.

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
som en aantal (gespreid?)
« Gepost op: 20 september 2005, 21:48:52 »
Hallo,
veronderstel, je hebt om de 4 kolommen een getal (+/-50kolommen met waarden) en dit over een 10-tal rijen.

Nu zou ik, per rij, de formule willen van de som van al deze getallen en ook het aantal dat ingevuld is.
Let wel : in andere kolommen staan er ook eventuele gegevens dus enkel de kolommen die ik wil (dus per 4) mogen geselecteerd worden.
Probleem : ik kan het oplossen met bv.
=SOM(G5;J5;M5;P5;S5;V5;Y5;AB5;AE5;AH5;AK5;AN5) + SOM(AQ5;AT5;AW5;AZ5;BC5;BF5;BI5;BL5;BO5;BR5;BU5;BX5) + SOMCA5;CD5;CG5;CJ5;CM5;CP5;CS5;CV5;CY5;DB5;DE5;DH5) +SOM(DK5;DN5;DQ5;DT5;DW5;DZ5;EC5;EF5;EI5;EL5;EO5;ER5) + SOM(EU5;EX5;FA5;FD5;FG5;FJ5;FM5;FP5;FS5;FV5;FY5;GB5)

maar dit is zeer omslachtig en dien ik allemaal te typen want doortrekken op gescheiden kolommen klopt niet.
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:som en aantal (gespreid?)
« Reactie #1 Gepost op: 20 september 2005, 22:23:15 »
Hoi Justaguy,

Je bent nu al een tijdje actief op het forum, en zoals je al wel gemerkt zult hebben, is het posten van een voorbeeldje een zeer goed hulpmiddeltje om een probleem uit te leggen.

Dus, als je ze goed wil zijn,.............  :)

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re:som en aantal (gespreid?)
« Reactie #2 Gepost op: 24 september 2005, 17:00:04 »
u vraagt, wij .... :)
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re:som en aantal (gespreid?)
« Reactie #3 Gepost op: 26 september 2005, 21:06:49 »
eigenlijk is de vraag.
Kan men een gespreide selectie van cellen in een formule doortrekken zonder alles te moeten intypen?
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:som en aantal (gespreid?)
« Reactie #4 Gepost op: 26 september 2005, 22:46:43 »
Hoi Justaguy,

Ik heb er eens mee beziggeweest, en met gewone formules krijg ik het niet klaar, wat niet wil zeggen dat de echte specialisten hier geen simpele oplossing voor hebben.

Wat heb ik wel?  8)
In mijne "dikke van Excel" staat dat het met een matrixformule moet kunnen, maar aangezien matrixformules voor mij Chinees zijn (ik zie er de logica niet van in  :'(), ga ik me daar niet aan wagen.

Ik heb het ook in een macrootje (VBA) kunnen steken, en dan werkt het ook, maar als ik het naar de Worksheet_Change wil zetten blijft het scriptje gewoon doorlussen, en dan helpt alleen nog een "Ctrl-Break".

Ik wil het hier wel eens bij aanhangen, misschien dat het iemand anders op een ideetje brengt.

Kolom A bevat de formule "=AANTAL.ALS($D4:$GA4;15)"
Kolom B en C worden berekent via de macro.

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:som en aantal (gespreid?)
« Reactie #5 Gepost op: 28 september 2005, 20:01:46 »
Ik zie niet direct een manier om het veelvuldig intypen te vermijden wanneer er veel dergelijke versprongen kolommen zijn...

Dit is een typisch "loop...until" probleem dat zelfs een matrix formule niet kan oplossen. Enfin, met oplossen bedoel ik in dit verband: een minimale formule creëren die op zich weinig werk vraagt om de formule zelf te construeren.... Ook matrix-formules kunnen complex worden en dan schieten ze in dit verband hun doel voorbij, als ze al van toepassing zijn...

Ik zie dat spyder suggereert om dit op te lossen met VBA. Op zich geen slecht idee hier, maar VBA telkens die sommen laten berekenen is niet zo efficient: de Excel formules zijn stukken sneller dan wat je in VBA kan programmeren.

Daarom mijn voorstel voor dit probleem: gebruik een echte worksheet formule, maar laat de formule zelf door VBA creëren. Dat is hier de gulden middenweg: de kracht van een echte formule en het gemak van VBA...

Het voorbeeld in bijlage creëert de formule zelf met VBA en plakt die in de eerst rij. de routine vraagt de startkolom en de kolom "stap" tussen de te sommeren kolommen.

Bekijk het eens, misschien routine zelf in volgende post...

Bart
WinXP - Excel 2000/XP/2003

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:som en aantal (gespreid?)
« Reactie #6 Gepost op: 28 september 2005, 20:06:56 »
En dan hier de code zelf:

Private Sub CommandButton1_Click()
Dim rij As Integer, kolom As Integer, stap As Integer, formule As String
Dim currcel As Range, formcell As Range
' User input
startkolom = CInt(InputBox("start kolom:", , 2))
stap = CInt(InputBox("stap", , 2))
' Initialisaties
rij = 1
Set formcell = ActiveSheet.Cells(1, 1)
'
Do While Union(ActiveSheet.UsedRange, formcell).Address = ActiveSheet.UsedRange.Address
    ' Loop initialisaties
    kolom = startkolom
    formule = "=sum("
    Set currcel = ActiveSheet.Cells(formcell.Row, kolom)
    ' Bouw formule voor huidige rij
    Do While Union(ActiveSheet.UsedRange, currcel).Address = ActiveSheet.UsedRange.Address
        formule = formule & currcel.Address & "+"
        Set currcel = currcel.Offset(0, stap)
    Loop
    ' Finaliseer formule
    formule = Left(formule, Len(formule) - 1) 'verwijder laatste overbodige +
    formule = formule & ")"
    ' Plak formule
    formcell.formula = formule
    ' Initialiseer volgende rij
    Set formcell = formcell.Offset(1, 0)
Loop
End Sub


De formules worden door VBA gebouwd en dan in de cellen van de eerst kolom gestopt. Enkel de startkolom en de stap tussen twee kolommen moet je ingeven...

De gebouwde formule is een SUM formule, voor andere formules moet je natuurlijk de code aanpassen...

Bart
WinXP - Excel 2000/XP/2003

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re:som en aantal (gespreid?)
« Reactie #7 Gepost op: 29 september 2005, 22:33:48 »
hallo Barthold,

de meeste formules marcheren, alleen heb ik nog problemen met onderstaande formule. Het moet in een cel aangeven hoeveel spellen van 15 punten ik gewonnen heb (let wel : op dezelfde rij staan ook de punten van de tegenpartij, daarom via deze stappen)

Sub Formule_spellen_gewonnen()
Dim formule As String
Dim currcel As Range, formcell As Range

Set formcell = ActiveSheet.Cells(5, 3) 'rij 5; kolom 3
Do While Union(ActiveSheet.UsedRange, formcell).Address = ActiveSheet.UsedRange.Address
    ' Loop initialisaties
    formule = "=sum(count.if("
    Set currcel = ActiveSheet.Cells(formcell.Row, 9) 'start in kolom 9
    ' Bouw formule voor huidige rij
    Do While Union(ActiveSheet.UsedRange, currcel).Address = ActiveSheet.UsedRange.Address
        formule = formule & currcel.Address & ";15);count.if("
        Set currcel = currcel.Offset(0, 3) 'stap 3
    Loop
    ' Finaliseer formule
    formule = Left(formule, Len(formule) - 10) 'verwijder laatste overbodige +
    formule = formule & ")"
    MsgBox (formule)
    ' Plak formule
    formcell.Formula = formule
    ' Initialiseer volgende rij
    Set formcell = formcell.Offset(1, 0)
Loop
End Sub
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline Justaguy

  • Lid
  • *
  • Berichten: 86
  • Wie zoekt, die vindt ... het in Oplossing.be
Re:som en aantal (gespreid?)
« Reactie #8 Gepost op: 04 oktober 2005, 21:24:09 »
De laatste formule wil maar niet werken.
Blijkbaar is er een conflict tussen de ned. en engelse versie qua vertaling van VBA naar excelblad.


Sub Formule_spellen_gewonnen()
Dim formule1 As String
Dim currcel1 As Range, formcell1 As Range

Set formcell1 = ActiveSheet.Cells(5, 3) 'rij 5; kolom 5
Do While Union(ActiveSheet.UsedRange, formcell1).Address = ActiveSheet.UsedRange.Address
    ' Loop initialisaties
    formule1 = "=countif("
    Set currcel1 = ActiveSheet.Cells(formcell1.Row, 9) 'start in kolom 9
    ' Bouw formule voor huidige rij
    Do While Union(ActiveSheet.UsedRange, currcel1).Address = ActiveSheet.UsedRange.Address
        formule1 = formule1 & currcel1.Address & ";15)" & "+ countif("
        Set currcel1 = currcel1.Offset(0, 3) 'stap 3
    Loop
    ' Finaliseer formule
    formule1 = Left(formule1, Len(formule1) - 10) 'verwijder laatste overbodige + countif(
    ' Plak formule
    MsgBox (formule1)
    formcell1.Formula = formule1
    ' Initialiseer volgende rij
    Set formcell1 = formcell1.Offset(1, 0)
Loop

End Sub


Bovenstaande formule werd wel indien ik de ned. vertaling 'aantal.als' in samengebruik met formulalocal gebruik.
Nu is het zo dat de formule op beide versies (ned en engels) moet lopen.
Wat is het probleem en hoe kan ik dit oplossen?

Mvg.
Just_a_Guy.
SYSTEEM: AMD Athlon 1Ghz - 256Mb RAM - Win XP - Office2003 – kabel)

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:som en aantal (gespreid?)
« Reactie #9 Gepost op: 05 oktober 2005, 08:58:03 »
Heb je Excel NL of UK? Of de combinatie?
WinXP - Excel 2000/XP/2003

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:som en aantal (gespreid?)
« Reactie #10 Gepost op: 05 oktober 2005, 10:23:45 »
Ik werk aan een oplossing. Vanmiddag of vanavond post ik ze. Maar het ziet er wel doenbaar uit...

Grtz
WG
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:som en aantal (gespreid?)
« Reactie #11 Gepost op: 05 oktober 2005, 11:27:20 »
Sneller dan verwacht  :)

Bemerkingen over de werkwijze:

 - geen VBA, wel matrixfunctie
 - de formules voor de gele cellen kunnen uiteraard simpeler dan die voor de oranje cellen. Zo kan in cel B14 ook staan:
 = -B3   (dit komt enkel en alleen door wat je wilt berekenen: som van de oranje cellen - som van de gele cellen = -(som van de gele cellen - som van de oranje cellen). Als je nog volgt...).
 - Ook de formule in B3 kan nog simpeler:
=SUM((MOD(COLUMN($D$3:$GA$3)-5;3)=0)*(($D$3:$GA$3)-($E$3:$GB$3)))
Maar dan is de uitbreiding naar de gele cellen niet meer 100% vlot. Laat maar zitten als je dat niet begrijpt, geen enkel probleem).
 - pas op met kolommen invoegen en verwijderen. De formules maken nl. gebruik van de restfunctie. Ik probeer de formule van cel C3 uit te leggen:
 1/ trek van de kolomnummer 5 af. (eerste gebruikte kolom is E, dit is de 5de kolom)
 2/ laat berekenen of de rest van dit getal, gedeeld door 3, nul is. Dwz. startend met kolom E als eerste kolom, als de rest = 0 wil dit zeggen dat we met een veelvoud van 3 zitten, en dit levert dus elke derde kolom op na kolom E. Dit zijn precies de oranje kolommen die we willen evalueren in B3.
 3/ Je laat vervolgens mod(...)=0   is dus ofwel 1 (als het een oranje kolom is, ofwel 0 (geen oranje kolom).
 4/ Dit resultaat gaan we "celsgewijs" vermenigvuldigen met de waarden van de cellen.

Wat er dus gebeurt is het volgende (en merk op dat het een matrix functie is die door een bepaald bereik gaat, hier het bereik D3:GA3):

in D3: is het een oranje kolom? d.i. is mod(...) = 0?
ja = 1, neen = 0
doe die 1 of 0 maal de waarde in cel D3 zelf.
Dus 1*D3 of 0*D3

Doe hetzelfde voor E3, F3, G3, ...
Tel de resultaten op (sum).

De som bestaat dus uit nullen (voor de niet-oranje cellen; en ook de oranje cellen met waarde 0), of andere getallen (voor de oranje cellen die niet 0 zijn).

Hopelijk is dit duidelijk zodat je zonder probleem nog wat verder aanpassingen kan maken die evt. nodig/gewenst zijn.

Zie ook bijlage.

Indien niet, vraag maar.

Gtrz
WG
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:som en aantal (gespreid?)
« Reactie #12 Gepost op: 06 oktober 2005, 09:29:02 »
 - Oh ja, matrixformules voer je in net als alle andere formules in Excel, en in plaats van Enter te drukken, druk je Ctrl-Shift-Enter.

 - formules doortrekken van bv. rij 3 tot rij 7 met de vulgreep kan gewoon zoals anders



Ik heb er eens mee beziggeweest, en met gewone formules krijg ik het niet klaar, wat niet wil zeggen dat de echte specialisten hier geen simpele oplossing voor hebben.

Wat heb ik wel?  8)
In mijne "dikke van Excel" staat dat het met een matrixformule moet kunnen, maar aangezien matrixformules voor mij Chinees zijn (ik zie er de logica niet van in  :'(), ga ik me daar niet aan wagen.



 - wat denken jullie van de oplossing? Ben ik nu een echte specialist Spyder  8)
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:som en aantal (gespreid?)
« Reactie #13 Gepost op: 06 oktober 2005, 12:48:14 »
wat denken jullie van de oplossing?
Knap. 8) Zeer knap. :)

 Die matrix formule was ongeveer wat ik gelezen had, maar aangezien ik er niet veel van begreep (vooral dan hoe je die matrixen moet "lezen") , vond ik het raadzamer om "een voorzetje" te geven dan iets klakkeloos over te schrijven waar je , bij eventuele verdere vragen van de vraagsteller, met je mond vol tanden staat.  ;)

Citaat
Ben ik nu een echte specialist Spyder  8)
Voor mij ben je één van de Excelspecialisten. ;D ;D ;D

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:som en aantal (gespreid?)
« Reactie #14 Gepost op: 07 oktober 2005, 08:39:04 »
Ja, zeer goed gevonden van WG. Ik moet me duidelijk eens terug verdiepen in matrix-formules ;-)

Tja, spyder, wat moeten we daarop zeggen ;-) Iedereen kan natuurlijk suggereren om matrix-formules te gebruiken van zodra het probleem wat te moeilijk lijkt voor gewone formules. LOL. Maar allez, omdat het bijna weekend is: goeie suggestie ;-)

Bart
WinXP - Excel 2000/XP/2003

 


www.combell.com