Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Randbetween() uit een niet aaneensluitende reeks getallen  (gelezen 1440 keer)

0 leden en 1 gast bekijken dit topic.

Offline Yuko

  • Nieuw lid
  • Berichten: 4
  • Hey, ik ben nieuw hier !
Randbetween() uit een niet aaneensluitende reeks getallen
« Gepost op: 09 maart 2023, 21:27:26 »
Goedenavond,

ik ben op zoek naar een oplossing om een willekeurig getal uit een niet aaneensluitende reeks getallen te bekomen.
Ik heb hierbij een voorbeeld aangehecht met een volgens mij mogelijke oplossing, maar misschien hebben jullie een andere, betere oplossing.

Alvast bedankt.

Yuko

Offline MollyVH

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 458
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #1 Gepost op: 10 maart 2023, 10:05:54 »
Hallo Yuko,

Welkom op oplossing.be !

Je hebt dus wel al een oplossing (ik vind ze evenwel niet in je bestand) om de getallen uit J2:L2 te verwijderen uit A8:T8?
En het enige probleem is nog hoe uit de resterende random getallen te kiezen? Daarvoor zie ik inderdaad een simpelere manier: gebruik het aantal getallen (altijd 17 of kan dat ook variŰren? - vertrek in dat geval van de functie 'aantal') als hoogste waarde om een random getal te kiezen, in het voorbeeld dus van 1 tot 17, en die gebruik je vervolgens als 'index'. Om het controleren op gelijke resultaten eenvoudig te houden kan je dan nog hetzelfde principe hanteren voor het 2░ en 3░.

Doe je zelf een poging? Als het niet lukt zetten we je wel verder op weg (hoewel, dat zal dan al ongeveer de ganse oplossing zijn ;)).

Mvg,
Molly

Offline Yuko

  • Nieuw lid
  • Berichten: 4
  • Hey, ik ben nieuw hier !
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #2 Gepost op: 10 maart 2023, 14:20:37 »
Goeiedag Molly,

in mijn aangehechte dokument had ik mijn redenering neergeschreven van hoe ik het zou doen om deze oplossing te vinden, geen code.
Oefening om te zien of dat mijn redenering al werkt.
De startgetallen haal ik uit de volledige reeks (A5:T5) ==> (A8:Q8)
Dan doe ik een RandBetween() uit (A5:T5), en ga het gevonden willekeurige getal dan vergelijken met (A8:Q8)
Wanneer er geen MATCH is dan vul je het getal in (J2:L2), anders moet er een nieuw getal gezocht worden.

Ik ben nog maar net met VBA begonnen en ben nog niet zo handig in het schrijven van een code. Vandaar mijn vraag.

Ik vermoed dat er enkele geneste formules nodig zijn om tot een oplossing te komen en daar knelt voorlopig het schoentje om zelf de code te schrijven.

Dus uw hulp is welkom.

Yuko

Offline MollyVH

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 458
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #3 Gepost op: 10 maart 2023, 14:32:58 »
Haha, dat verandert de kwestie.
Je zou ook alles binnen vba kunnen afhandelen, t.t.z. zonder interactie met je werkblad, maar aangezien je nog redelijk nieuw bent in vba heb ik er liever een code voor gemaakt die, vooral als je er stap voor stap door gaat (F8 is gekend?), zichzelf wel zal verklaren.
Veel plezier ermee !

Sub RandBetweenUnregularRange()

Range("A8:T8") = Range("A5:T5").Value
For i = 1 To 3
    schrappen = Cells(2, i + 9)
    kolom = Range("A8:T8").Find(what:=schrappen, lookat:=xlWhole).Column
    Cells(8, kolom).Delete Shift:=xlToLeft
Next i
aantal = 17
For i = 0 To 2
    positie = Int(Rnd * (aantal - i)) + 1
    getal = Application.Index(Range("A8:T8"), positie)
    Cells(11, i + 10) = getal
    Cells(8, positie).Delete Shift:=xlToLeft
Next i

End Sub

Gokje: je kiest voor je lotto-deelname zelf 3 getallen en laat de overige 3 aan het toeval over?  :D

Mvg,
Molly

Offline Yuko

  • Nieuw lid
  • Berichten: 4
  • Hey, ik ben nieuw hier !
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #4 Gepost op: 11 maart 2023, 16:16:59 »
Bedankt Molly,

de code werkt zoals ik het mij had voorgesteld.

Bedankt hiervoor.

Ik ben momenteel aan't proberen om de code te ontrafelen om te zien hoe het precies werkt, maar het lukt me nog niet helemaal.

Deze code was niet bedoeld zoals vermeld in uw gokje, maar heeft mij wel op een idee gebracht, maar daarom moet ik eerst slagen in het begrijpen van de code, want ik heb al eens iets geprobeerd, maar het werkte niet.

Voor mij is de vraag beantwoord en mag dit onderwerp afgesloten worden.

Maar is er een mogelijkheid om apart, buiten de groep dit verder te bespreken.

Yuko


Offline MollyVH

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 458
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #5 Gepost op: 12 maart 2023, 10:36:32 »
Hallo Yuko,

Citaat
Maar is er een mogelijkheid om apart, buiten de groep dit verder te bespreken.
De bedoeling van een helpforum is dat iedereen er iets mag van opsteken, niet in de laatste plaats omdat helpers een deel van hun vrije tijd op vrijwillige basis en vooral gratis spenderen aan het helpen waar ze maar kunnen. Bijkomende vragen zullen met grote waarschijnlijkheid beantwoord worden als je ze op het forum post.

Citaat
het lukt me nog niet helemaal
Vrij vertaald begrijp jet het meeste dus wel(?)
Ik had de code geschreven volledig in overeenstemming met de uitleg uit mijn eerste post, reden te meer om te veronderstellen dat er niet zo heel veel onduidelijk kan zijn. Dus meld vooral waar in de code je vast zit. Het zou ook helpen als je vragen als "F8 is gekend?" zou beantwoorden. De inspanning mag een beetje van beide kanten komen, denk ik altijd...

Mvg,
Molly

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 1.890
  • Geslacht: Man
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #6 Gepost op: 12 maart 2023, 11:16:53 »
Hallo Yuko,
De bedoeling van een helpforum is dat iedereen er iets mag van opsteken, niet in de laatste plaats omdat helpers een deel van hun vrije tijd op vrijwillige basis en vooral gratis spenderen aan het helpen waar ze maar kunnen. Bijkomende vragen zullen met grote waarschijnlijkheid beantwoord worden als je ze op het forum post.
had mij ook al bedenkingen gemaakt omtrent de vraag van TS om "buiten de groep" te gaan....
Mvg,
Arnold.

Offline Yuko

  • Nieuw lid
  • Berichten: 4
  • Hey, ik ben nieuw hier !
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #7 Gepost op: 13 maart 2023, 06:01:37 »
Goedemorgen Molly/Arnold,

ik begrijp jullie reactie, maar omdat ik nog een beginneling ben in VBA en andere mensen niet onnodig wil vervelen met mijn soms nog veel te eenvoudige vragen, dacht ik dat deze vraag een oplossing kon zijn.
De bedoeling is dat ik mij eerst verder wil bekwamen in VBA, alvorens mij in een groep te mengen.
Anders huppel ik toch maar achterna en houd de rest op om sneller vooruitgang te maken.
Vandaar mijn vraag.

Terug naar het onderwerp, voor zover ik mee ben :

Sub RandBetweenUnregularRange()

Range("A8:T8") = Range("A5:T5")      [Dit is om de beide reeksen gelijk te zetten]
For i=1 To 3                                      [variable voor de 3 getallen]
     schrappen = Cells(2, i+9)              [? naar wat verwijst deze 2, i+9 (i+9= te beginnen vanaf 10???)   
     kolom=Range("A8:T8").Find(what:=schrappen, lookat:=xIWhole).Column
                                                        [Range("A8:T8") is toch een rij en word hier benoemd als een
                                                          kolom ???
                                                         Deze regel dient om het geselecteerde getal te vinden]
     Cells(8,kolom).Delete shift:=xIToLeft [? wat doet Cells(8,kolom), er achter is om het geselcteerde
                                                             getal te verwijderen]
Next i
aantal = 17                                         [De Range bestaat uit 20 getallen waarvan er 3 geschrapt
                                                           worden, dus er blijven er 17 over]
For i = 0 To 2
     positie Int (Rnd * (aantal- i)) + 1     [ ??? ]
     getal = Application.Index(Range("A8:T8"),positie)     [ ??? ]
     Cells(11, i+10) = getal                     [ ??? ]
     Cells(8, positie).Delete Shift:=xIToLeft   [Verwijderd nieuw geselecteerd getal om dubbel te
                                                                 vermijden]
Next i

End Sub

Ik heb nog te weinig kennis/ervaring in het programmeren om de logische stappen in het proces van de gewone taal om te zetten in code.
Vandaar dat het voor mij moeilijk is om te begrijpen wat er allemaal gebeurt.
De bedoeling is om de code te begrijpen, zodanig dat ik achteraf zelf indien nodig nog aanpassingen kan doen of toepassen in een soortgelijke oefening.
Maar momenteel wil ik al fietsen maar kan niet eens op de fiets zitten, dus ...... .

Ik heb in September 3 scholen bezocht, op zoek naar een avondcursus Excell-VBA, maar zonder succes.
Dan maar via YouTube en wat zelf studie geprobeerd, maar zoals je kan zien heeft het nog niet veel opgebracht.

Yuko



Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 1.890
  • Geslacht: Man
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #8 Gepost op: 13 maart 2023, 09:14:00 »
als je in je browser "excel vba cursus gratis" ingeeft dan kom je toch wel veel tegen , zonder dat je daarom naar Youtube moet kijken...
en van hier uit zo uitleggen hoe iedere regel in elkaar zit...veel "experimenteren" met vallen en opstaan , zo heb ik het ook gedaan maar mijn kennis is maar heel miniem Ún "old school"....
er zitten hier veel knappere specialisten in Excel en VBA dan ikzelf...
veel plezier , je zal merken dat gaandeweg het beter en beter gaat Ún soms kan leiden tot een VBA (Excel) verslaving  ;D
mvg,
Arnold.

ps : ik zie dat je toch wel worstelt met "cells(1,1)" , dat is gewoon cells(rij,kolom) , je kan kiezen voor een cijfer of voor een variabele : cells(1,10) verwijst naar cel J1
of : rij = 5 , kolom = 5 , cells(rij,kolom) verwijst hier dus naar cel E5........

heel klein stukje code om "cells(rij,kolom)" en een "for next" te begrijpen :
For lus = 1 To 10: Rem maak een lus van 10 herhalingen , voor lus kan je iedere naam gebruiken die je wilt is soms makkelijk om te kunnen volgen , mag ook 1 letter zijn
Cells(lus, 1).Value = lus: rem lus is in cells dus de rij , de 1 de kolom , iedere herhaling wordt de rij met 1 opgehoogd , de kolom is kolom A en de waarde "lus" wordt ingevuld dus verhoogt ook iedere keer met 1
Next lus: Rem volgende herhaling uitvoeren
« Laatst bewerkt op: 13 maart 2023, 09:43:11 door Montagnard »

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 19.677
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #9 Gepost op: 13 maart 2023, 11:10:50 »
Arnold  ;),
er zitten hier veel knappere specialisten in Excel en VBA dan ikzelf...
;D ;D ;D Letterlijk genomen beweer je hiermee dat je een Excel specialist bent, maar dat je niet zo "knap" bent dan anderen... ;D ;D ;D

Een goeie  :thumbsup:

Groeten,

:) SoftAid :)             

Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 1.890
  • Geslacht: Man
Re: Randbetween() uit een niet aaneensluitende reeks getallen
« Reactie #10 Gepost op: 13 maart 2023, 12:46:47 »
Arnold  ;), ;D ;D ;D Letterlijk genomen beweer je hiermee dat je een Excel specialist bent, maar dat je niet zo "knap" bent dan anderen... ;D ;D ;D

Een goeie  :thumbsup:

Groeten,

:) SoftAid :)             

maar mijn kennis is maar heel miniem Ún "old school"....
@SoftAid : dit zegt toch genoeg denk ik  :P ;)

 


www.combell.com