• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

getallen uitzonderen in reeks

Status
Niet open voor verdere reacties.

Stitchie

Gebruiker
Lid geworden
13 aug 2009
Berichten
11
ik wil een aantal getallen uitzonderen in een reeks.
dus als ik tot en met 20 tel wil ik dat alle getallen die een 3 of 8 in het getal hebben niet worden meegeteld dus wil ik zien 16 getallen die wel meedoen.
En dit dan voor een grotere reeks (tot bv 2.000.000)

Kan dit in excel?
 
Meetellen?

Bv. onder elkaar vanaf cel A1.
Code:
Sub hsv()
Dim arr, j As Long, x As Long
ReDim arr(19, 0)
 For j = 1 To 20
   If InStr(j, 3) = 0 And InStr(j, 8) = 0 Then
      arr(x, 0) = j
              x = x + 1
   End If
 Next j
[a1].Resize(x) = arr
End Sub

edit: Plaats anders een bestandje wat er moet gebeuren, voor twee miljoen kom je uit op 524288 getallen in een kolom.
 
Laatst bewerkt:
edit: Plaats anders een bestandje wat er moet gebeuren, voor twee miljoen kom je uit op 524288 getallen in een kolom.

het raadsel is: alle getallen waar een 3 of 8 instaan tellen niet mee. dus bijvoorbeeld:
als je tot 20 telt kom je maar op 16 uit want 3,8,13 en 18 tellen niet mee.
Ik zoek tot hoe ik moet tellen als ik 1124162 getallen moet tellen.
Op dit moment heb ik nog niets in Excel maar wou dit proberen vandaar mijn vraag.
 
Dan kan je deze eens laten lopen.
Code:
Sub hsv()
Dim j As Long, x As Long
 For j = 1 To 1124162
   If InStr(j, 3) = 0 And InStr(j, 8) = 0 Then x = x + 1
 Next j
MsgBox x
End Sub
 
als ik je script doorlees lijkt het als je gaat zoeken van 1 tot en met 1124162.
Maar het moet zijn hoeveel getallen ik moet tellen om 1124162 als uitkomst te krijgen.

Het belangrijkste voor het uitvoeren van het script is hoe deze toe te passen in excel.
Ik ken wel het sigma teken maar dan houdt het op....
 
Aangepaste code:
Code:
Sub hsv_mb()
Dim j As Long, x As Long
 Do While x < 1124162
    j = j + 1
   If InStr(j, 3) = 0 And InStr(j, 8) = 0 Then x = x + 1
 Loop
 MsgBox j
End Sub

In de bijlage ook een veel snellere formule-oplossing.
 

Bijlagen

Of deze misschien:
Code:
Sub cobbe()
 For R = 1 To 25000000
  If x = 1124162 Then Exit For
   If InStr(R, 3) = 0 And InStr(R, 8) = 0 Then x = x + 1
 Next R
MsgBox R & " getallen nodig om het doel te bereiken"
End Sub
 
Ik wil de makro's proberen maar hoe of waar moet ik die toepassen in Excel.
@MarcelBeug jou toegevoegde excelsheet werkt perfect!!! nu alleen nog puzzelen hoe je die gemaakt hebt!!!

Maar als ik het nu precies andersom zou willen hebben:
alle getallen waar een 3 of 8 instaan tellen alleen mee. dus bijvoorbeeld:
als je tot 20 telt kom je op 4 uit want alleen de 3,8,13 en 18 tellen mee.
Ik zoek tot welk getal ik moet tellen om 401661 getallen te tellen.
 
Verander...
Code:
InStr(j, 3) = 0 And InStr(j, 8) = 0
...in.
Code:
InStr(j, 3)> 0 And InStr(j, 8) > 0
 
het script werkt....
als ik het tweede raadsel wil laten uitvoeren om te weten hoeveel 3 en 8 in de reeks van 1 tot 401661 zitten wat moet ik het script dan aanpassen als volgt.
Sub hsv_st()
Dim j As Long, x As Long
Do While x < 401662
j = j + 1
If InStr(j, 3) > 0 Or InStr(j, 8) > 0 Then x = x + 1
Loop
MsgBox j
End Sub

Ik twijfel over do while x =< 4011661 of do while x < 401662.
 
Misschien helpt dit je verder.
Code:
Sub hsv_st()
Dim j As Long, x As Long, msg As String
Do While x < 20
  j = j + 1
    If InStr(j, 3) > 0 Or InStr(j, 8) > 0 Then
      x = x + 1
      msg = msg & j & vbLf
    End If
Loop
MsgBox msg
End Sub
 
@hsv inmiddels heb ik de formule aangepast naar do while x < 401661.
Dat moet volgens mij kloppen dan!

Iedereen bedankt voor het meedenken en tot het volgende excel raadsel.
 
Misschien kan je dit raadsel nog als opgelost markeren (in je openingspost).
bvd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan