Hét vraag- en antwoordplatform van Nederland

Hoe kun je Excel laten uitrekenen hoeveel aandelen iemand heeft o.b.v. de nummers van de aandelen?

Iemand heeft de aandelen met de nummers 1-180;220;380-440. Dat staat in Excel in één cel. Hoe kun je Excel laten uitrekenen dat hij er dan in totaal 242 heeft?

Verwijderde gebruiker
4 jaar geleden
in: Software
1.5K
TurfGraver
4 jaar geleden
De nummers zijn allemaal de zelfde van de aandelen?

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Dat kan op een fatsoenlijke manier eigenlijk alleen met een macro:
1)
Gebruik in excel de toetsencombinatie 'ALT+F11' om de macro-editor te openen

2)
Ga naar 'Invoegen' > 'module' en plak de onderstaande code daarin

3)
Ga met ALT-TAB terug naar het Excel-werkblad. In de cel waar je het aantal aandelen wilt laten verschijnen typ je:
=reeksTotaal(A8;";")
Waarbij 'A8' de cel is waar je reeks met aandeelnummers staan. Staan ze in een andere cel, pas dan deze parameter aan zodat deze naar de correcte cel verwijst.
Eventueel kun je in de 2e parameter ook het scheidingsteken nog aan passen.

Hieronder de code (niet perfect of fool proof, maar het werkt):
---------------------------------------------------------------------
Function reeksTotaal(reeks As String, scheidingsteken As String) As Integer

Dim minPos As Integer
Dim stpos As Integer
Dim stposOud As Integer
Dim startReeks As Integer
Dim eindReeks As Integer

If Right(reeks, 1) <> scheidingsteken Then
reeks = reeks + scheidingsteken
End If

minPos = InStr(1, reeks, "-")
If minPos = 0 Then
minPos = Len(reeks) + 1
End If

stposOud = 1
stpos = InStr(1, reeks, scheidingsteken)

Do Until stpos = 0
startReeks = Val(Mid(reeks, stposOud, minPos - stposOud + 1))
If stpos < minPos Then
eindReeks = startReeks
Else
Debug.Print Mid(reeks, minPos + 1, stpos - minPos - 1)
eindReeks = Val(Mid(reeks, minPos + 1, stpos - minPos - 1))
minPos = InStr(minPos + 1, reeks, "-")
If minPos = 0 Then
minPos = Len(reeks) + 1
End If
End If
stposOud = stpos + 1
stpos = InStr(stposOud, reeks, scheidingsteken)
reeksTotaal = reeksTotaal + (eindReeks - startReeks) + 1
Loop

End Function
(Lees meer...)
Toegevoegd op 15 juli 2020 15:00: afbeelding
Plaatje bij antwoord
Ozewiezewozewiezewallakristallix
4 jaar geleden
Thecis
4 jaar geleden
+
Al moet ik wel eerlijk toegeven dat ik de makro niet heb gechecked. Maar in basis lijkt het er goed uit te zien (kan wel een beetje code lezen ;-) )
Ozewiezewozewiezewallakristallix
4 jaar geleden
Jammer dat de GoeieVraag de hele opmaak van de code om zeep helpt. :,-(
Alles is doodleuk links uitgelijnd. Dat komt de leesbaarheid niet ten goede. Maar daar kan ik even niets aan doen.
Verwijderde gebruiker
4 jaar geleden
Wat knap! En hij doet precies wat ik wil! Heel veel dank!

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding