Worksheet.nl  

Ga terug   Worksheet.nl > Excel Vragenforum > Afgehandelde vragen



Status bericht: Opgelost
Reageren
 
LinkBack Discussietools Weergave
  #1  
Oud 4 februari 2012, 15:38
Giga Senior Member
 
Geregistreerd: 17 februari 2007
Berichten: 2.572
Standaard som unieke waarden

@bsalv
http://www.worksheet.nl/forumexcel/v...tml#post601609

Hier heb je een keurige oplossing gegeven voor unieke waarde tellen.
Dit lukt ook met getallen.

Maar ik zat even te experimenteren om nu de som van die unieke getallen te krijgen.
Ik dacht dat onderstaande code misschien wel zou werken maar dat doet hij helaas niet.

Code:
Function somuniek(bereik)
  Dim SomUniekBereik As New Collection, c As Range
  On Error Resume Next
  For Each c In bereik.Cells
    If c <> "" Then SomUniekBereik.Add Item:=c.Value, Key:=CStr(c.Value)
  Next
  On Error GoTo 0
  somuniek = SomUniekBereik.Sum
End Function
Waar moet ik nu wat aanpassen.

Dus rij is bv 1, 1, 1, 2, 2, 3, 3, 4
Het resultaat moet dan wezen 10 (1+2+3+4=10)
__________________
Willem

Hoe meer je weet hoe meer je vergeet.
Hoe meer je vergeet hoe minder je weet.
Hoe minder je weet hoe minder je vergeet.
Hoe minder je vergeet hoe meer je weet.
Met citaat reageren
Sponsored Links
  #2  
Oud 4 februari 2012, 15:44
bsalv's schermafbeelding
Forum Guru
 
Geregistreerd: 26 maart 2008
Locatie: Bachten de kupe, W-Vl, Belgie
Berichten: 6.788
Standaard

zoiets bijvoorbeeld
Code:
Function somuniek(bereik)
  Dim SomUniekBereik As New Collection, c As Range, it As Variant
  On Error Resume Next
  For Each c In bereik.Cells
    If c <> "" And IsNumeric(c) Then SomUniekBereik.Add Item:=c.Value, Key:=CStr(c.Value)
  Next
  On Error GoTo 0
  For Each it In SomUniekBereik
  somuniek = somuniek + CDbl(it)
  Next
End Function
__________________
bsalv
"Er gaat meer boven je petje dan eronder" Toon Hermans
Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop

Laatst gewijzigd door bsalv; 4 februari 2012 om 15:46 Reden: eigenlijk is die CDbl vermoedelijk niet nodig
Met citaat reageren
  #3  
Oud 4 februari 2012, 15:52
snb snb is offline
Giga Senior Member
 
Geregistreerd: 29 juni 2008
Berichten: 2.692
Standaard

of

Code:
Function F_count_distinct_snb(c01)
 F_count_distinct_snb = Evaluate("Sum(N(countif(offset(" & c01.Cells(1).Address & ",,,row(" & c01.Address & "))," & c01.Address & ")=1))")
End Function
voor verwante funkties zie hier.
__________________
VBA voor smarties
Met citaat reageren
  #4  
Oud 4 februari 2012, 16:13
Giga Senior Member
 
Geregistreerd: 17 februari 2007
Berichten: 2.572
Standaard

Kort maar krachtig,
Maar niet wat ik vroeg.

Met jou formule krijg ik het aantal verschillende waarden en mijn vraag was duidelijk de som van alle verschillende waarden:
Citaat:
Dus rij is bv 1, 1, 1, 2, 2, 3, 3, 4
Het resultaat moet dan wezen 10 (1+2+3+4=10)
__________________
Willem

Hoe meer je weet hoe meer je vergeet.
Hoe meer je vergeet hoe minder je weet.
Hoe minder je weet hoe minder je vergeet.
Hoe minder je vergeet hoe meer je weet.
Met citaat reageren
  #5  
Oud 4 februari 2012, 16:54
bsalv's schermafbeelding
Forum Guru
 
Geregistreerd: 26 maart 2008
Locatie: Bachten de kupe, W-Vl, Belgie
Berichten: 6.788
Standaard

@snb
misschien kan je weer eens iets goochelen
het is de bedoeling dat ieder getal misschien wel vaker voorkomt, maar die mag maar 1 keer in de som mee opgeteld worden !!!
Code:
Function F_Sommeer_Verschillende_Waarden_BSALV(c01)
  For j = 1 To UBound(c01.Value)
    c02 = c02 & "~|~" & Join(Application.Index(c01.Value, j), "~|~")
  Next
  c02 = Mid(c02, 4, Len(c02) - 4)
  Do
    i = InStr(1, c02, "~|~")
    If i <> 0 Then
      c03 = Left(c02, i - 1)
      If IsNumeric(c03) Then som = som + CDbl(c03)
      If i > 1 Then
        Do
          l = Len(c02)
          c02 = Replace(c02, "~|~" & c03 & "~|~", "~|~")
        Loop While l <> Len(c02)
      End If
      c02 = Mid(c02, i + 3, Len(c02))
    End If
  Loop While i <> 0
  F_Sommeer_Verschillende_Waarden_BSALV = som
End Function
__________________
bsalv
"Er gaat meer boven je petje dan eronder" Toon Hermans
Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop
Met citaat reageren
  #6  
Oud 4 februari 2012, 17:25
GiMe's schermafbeelding
Super Moderator
 
Geregistreerd: 9 november 2006
Locatie: België
Berichten: 2.592
Standaard

In formulevorm :
Code:
=SOMPRODUCT((A1:A8)*(AANTAL.ALS(VERSCHUIVING($A$1;RIJ(A1:A8)-RIJ(A1);;AANTAL(A1:A8)-(RIJ(A1:A8)-RIJ(A1));1);A1:A8)=1))
met in A1:A8 de getallen
__________________
Groet,
GiMe Moderator
Mr.GiMe@worksheet.nl

Alles is relatief en zelfs dat..

Een bijlage (Excelvoorbeeldje met aanduiding van het gewenste resultaat) erbij betekent:
-dat de helper(s) niet de, meestal reeds bestaande, worksheet van de vrager moet(en) overtypen
-geen (ver)gissen mogelijk is bij de interpretatie van het proza
-men reeds kan anticiperen op toekomstige problemen
-veel vlugger tot een oplossing komt

kortom : Het wiel niet opnieuw dient uitgevonden te worden !

Laatst gewijzigd door GiMe; 4 februari 2012 om 17:39 Reden: formule veralgemeend
Met citaat reageren
  #7  
Oud 4 februari 2012, 17:37
Mega Senior Member
 
Geregistreerd: 21 december 2006
Berichten: 1.590
Standaard som unieke waarden

Hallo Willem,

Of:

Code:
=SOM(ALS(INTERVAL(A1:A8;A1:A8)>0;A1:A8))
link: http://support.microsoft.com/kb/268001/nl

Groet

Dirk

Laatst gewijzigd door dirktimm; 4 februari 2012 om 17:41
Met citaat reageren
  #8  
Oud 4 februari 2012, 17:45
bsalv's schermafbeelding
Forum Guru
 
Geregistreerd: 26 maart 2008
Locatie: Bachten de kupe, W-Vl, Belgie
Berichten: 6.788
Standaard

of hoe je via Parijs en Rome rond ook kunt gaan koffie drinken bij de buren
__________________
bsalv
"Er gaat meer boven je petje dan eronder" Toon Hermans
Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop
Met citaat reageren
  #9  
Oud 4 februari 2012, 17:54
Giga Senior Member
 
Geregistreerd: 17 februari 2007
Berichten: 2.572
Standaard

Toch leuk dat er zoveel reactie komen om mij te helpen met mijn experimentje.
De oplossing met formules had ik reeds (op de zelfde site gevonden).
Stukje bij beetje wil ik ook iets meer van vba weten vandaar deze vraag.
Er zijn inmiddels 7 reacties op mijn vraag geweest maar #2 was reeds voldoende.

Toch allemaal bedankt.
__________________
Willem

Hoe meer je weet hoe meer je vergeet.
Hoe meer je vergeet hoe minder je weet.
Hoe minder je weet hoe minder je vergeet.
Hoe minder je vergeet hoe meer je weet.
Met citaat reageren
  #10  
Oud 4 februari 2012, 18:16
snb snb is offline
Giga Senior Member
 
Geregistreerd: 29 juni 2008
Berichten: 2.692
Standaard

Daarom ten overvloede:

Code:
Function F_count_distinct_snb3(c01)
  F_count_distinct_snb3 = Evaluate("Sumproduct((countif(offset(" & c01.Cells(1).Address & ",,,row(" & c01.Address & ")-row(" & c01.Cells(1).Address & ")+1)," & c01.Address & ")=1)*(" & c01.Address & "))")
End Function
en
Code:
Function Function F_sum_distinct_snb4(c01)
    F_sum_distinct_snb4 = Evaluate("sum(if(frequency(" & c01.Address & "," & c01.Address & ")>0," & c01.Address & "))")
End Function
__________________
VBA voor smarties

Laatst gewijzigd door snb; 4 februari 2012 om 18:25
Met citaat reageren
Reageren


Discussietools
Weergave

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Aan



Ga terug   Worksheet.nl > Excel Vragenforum > Afgehandelde vragen


Soortgelijke discussies
Discussie Auteur Forum Reacties Laatste bericht
Unieke waarden en aantal Hanzsel Vragen 9 18 april 2012 18:02
Unieke waarden weergeven na filter R.Jorna Afgehandelde vragen 9 21 oktober 2011 16:52
Unieke waarden in lijst verwijderen Timmo Afgehandelde vragen 25 18 juni 2009 20:02
unieke waarden filteren uit 2 lijsten maze00 Afgehandelde vragen 5 8 april 2009 10:31
ID's koppelen aan unieke waarden. Ids Afgehandelde vragen 8 28 november 2008 11:21


Alle tijden zijn GMT +2. Het is nu 02:21.


Forumsoftware: vBulletin®, versie 3.8.7
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0