How to show entries of a shuffled array in VBA / Excel -
i've been trying shuffle 11-integer array , paste shuffled array excel. i've found code want, instead of returning shuffled entries of array shows shuffled row numbers (col a) , random numbers used sorting (col b).
i'm new vba , can't figure out return entry of array corresponds shuffled row number in col a, if makes sense? want see shuffled entries , not row numbers or random numbers. hope makes sense! i'm using:
sub shuffle() dim intnumbers(1 11) integer 'the list of numbers want shuffle intnumbers(1) = 1 intnumbers(2) = 1 intnumbers(3) = 1 intnumbers(4) = 1 intnumbers(5) = 1 intnumbers(6) = 1 intnumbers(7) = 2 intnumbers(8) = 5 intnumbers(9) = 6 intnumbers(10) = 3 intnumbers(11) = 7 dim rngnumbers range dim rngrandom range dim rngsort range dim rngtemp range set rngnumbers = activesheet.range("a1:a11") set rngrandom = activesheet.range("b1:b11") set rngsort = activesheet.range("a1:b11") randomize ' store number , random sequence each rngtemp in rngrandom rngtemp = rnd() rngtemp.offset(0, -1) = rngtemp.row next rngsort.sort key1:=rngsort.columns(2) each rngtemp in rngnumbers intnumbers(rngtemp.value) = rngtemp next end sub i can see code doing can't figure out how i'd like. still got lot learn!
try code. leave original rows in column a, sorted random numbers a>z in column b, , in column c: index of array, dependent on row number.
sub shuffle() dim intnumbers(1 11) integer 'the list of numbers want shuffle intnumbers(1) = 1 intnumbers(2) = 1 intnumbers(3) = 1 intnumbers(4) = 1 intnumbers(5) = 1 intnumbers(6) = 1 intnumbers(7) = 2 intnumbers(8) = 5 intnumbers(9) = 6 intnumbers(10) = 3 intnumbers(11) = 7 dim rngnumbers range dim rngrandom range dim rngsort range dim rngtemp range set rngnumbers = activesheet.range("a1:a11") set rngrandom = activesheet.range("b1:b11") set rngsort = activesheet.range("a1:b11") randomize ' store number , random sequence each rngtemp in rngrandom rngtemp = rnd() rngtemp.offset(0, -1) = rngtemp.row next rngsort.sort key1:=rngsort.columns(2) each rngtemp in rngnumbers rngtemp.offset(0, 2).value = intnumbers(rngtemp) next end sub
Comments
Post a Comment