Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Dear Forum,

I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default Creating a table of random numbers

Once the range has been selected:

Sub hfakdf()
For Each r In Selection
r.Formula = "=int(Rand() *" & Selection.Count & "+1)"
Next
End Sub

--
Gary''s Student - gsnu200802


"matt3542" wrote:

Dear Forum,

I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,549
Default Creating a table of random numbers

This approach requires the installation of the AnalysisToolPak...
'----
Sub RandomByChoice()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = 10
y = 5
N = x& * y&

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing
End Sub
'----
You may also want to take a look at my "Special Randoms" workbook.
It can be downloaded at http://excelusergroup.org/media/
--
Jim Cone
Portland, Oregon USA



"matt3542"
wrote in message
Dear Forum,
I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Hi Gary, any chance you could give the code in full as I am still struggling,
I'm really new to all this, many thanks. Matt

"Gary''s Student" wrote:

Once the range has been selected:

Sub hfakdf()
For Each r In Selection
r.Formula = "=int(Rand() *" & Selection.Count & "+1)"
Next
End Sub

--
Gary''s Student - gsnu200802


"matt3542" wrote:

Dear Forum,

I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Many Thanks Jim, that worked brilliantly! Have a good weekend, Matt

"Jim Cone" wrote:

This approach requires the installation of the AnalysisToolPak...
'----
Sub RandomByChoice()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = 10
y = 5
N = x& * y&

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing
End Sub
'----
You may also want to take a look at my "Special Randoms" workbook.
It can be downloaded at http://excelusergroup.org/media/
--
Jim Cone
Portland, Oregon USA



"matt3542"
wrote in message
Dear Forum,
I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Apologies Jim but upon closer inspection although the dimensions of the table
are fine, my aim was to create a table of data with random numbers where the
range of random numbers is between 1 and the total number of cells with NO
duplicates. I have used your code below and it does work but it duplicates
values, i.e if I specify a table 5 * 5 I would expect it to be populated at
random with the numbers 1 - 25 from A5:E5 with each number appearing only
once. At present this code is returning duplicate values. Is there any way I
can prevent this from occurring?

Sub RandomTable()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = InputBox("Please enter the number of Columns required for the table")
y = InputBox("Please enter the number of Rows required for the table")
N = x& * y&

Sheets("Sheet1").Select
Range("A1").Select

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing

End Sub

Many Thanks
Matt


"Jim Cone" wrote:

This approach requires the installation of the AnalysisToolPak...
'----
Sub RandomByChoice()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = 10
y = 5
N = x& * y&

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing
End Sub
'----
You may also want to take a look at my "Special Randoms" workbook.
It can be downloaded at http://excelusergroup.org/media/
--
Jim Cone
Portland, Oregon USA



"matt3542"
wrote in message
Dear Forum,
I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 806
Default Creating a table of random numbers

Hello Matt,

I suggest to use my UDF UniqRandInt or VBUniqRandInt:
http://www.sulprobil.com/html/uniqrandint.html

Regards,
Bernd
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,549
Default Creating a table of random numbers

Or this...
'--
Sub RandomByChoice_R1()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long
Dim M As Long
Dim i As Long

x = 5
y = 10
i = x& * y&
Set rng = ActiveCell.Resize(y, x)

For N = 1 To i
Do
M = Int(i * Rnd + 1)
If Len(rng(M).Value) = 0 Then
rng(M).Value = N
Exit Do
End If
Loop
Next
Set rng = Nothing
End Sub
'--
Jim Cone
Portland, Oregon USA




"matt3542"
wrote in message
Apologies Jim but upon closer inspection although the dimensions of the table
are fine, my aim was to create a table of data with random numbers where the
range of random numbers is between 1 and the total number of cells with NO
duplicates. I have used your code below and it does work but it duplicates
values, i.e if I specify a table 5 * 5 I would expect it to be populated at
random with the numbers 1 - 25 from A5:E5 with each number appearing only
once. At present this code is returning duplicate values. Is there any way I
can prevent this from occurring?

Sub RandomTable()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = InputBox("Please enter the number of Columns required for the table")
y = InputBox("Please enter the number of Rows required for the table")
N = x& * y&

Sheets("Sheet1").Select
Range("A1").Select

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing

End Sub

Many Thanks
Matt


"Jim Cone" wrote:

This approach requires the installation of the AnalysisToolPak...
'----
Sub RandomByChoice()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = 10
y = 5
N = x& * y&

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing
End Sub
'----
You may also want to take a look at my "Special Randoms" workbook.
It can be downloaded at http://excelusergroup.org/media/
--
Jim Cone
Portland, Oregon USA



"matt3542"
wrote in message
Dear Forum,
I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)


  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Thankyou Jim, that worked just right

"Jim Cone" wrote:

Or this...
'--
Sub RandomByChoice_R1()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long
Dim M As Long
Dim i As Long

x = 5
y = 10
i = x& * y&
Set rng = ActiveCell.Resize(y, x)

For N = 1 To i
Do
M = Int(i * Rnd + 1)
If Len(rng(M).Value) = 0 Then
rng(M).Value = N
Exit Do
End If
Loop
Next
Set rng = Nothing
End Sub
'--
Jim Cone
Portland, Oregon USA




"matt3542"
wrote in message
Apologies Jim but upon closer inspection although the dimensions of the table
are fine, my aim was to create a table of data with random numbers where the
range of random numbers is between 1 and the total number of cells with NO
duplicates. I have used your code below and it does work but it duplicates
values, i.e if I specify a table 5 * 5 I would expect it to be populated at
random with the numbers 1 - 25 from A5:E5 with each number appearing only
once. At present this code is returning duplicate values. Is there any way I
can prevent this from occurring?

Sub RandomTable()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = InputBox("Please enter the number of Columns required for the table")
y = InputBox("Please enter the number of Rows required for the table")
N = x& * y&

Sheets("Sheet1").Select
Range("A1").Select

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing

End Sub

Many Thanks
Matt


"Jim Cone" wrote:

This approach requires the installation of the AnalysisToolPak...
'----
Sub RandomByChoice()
Dim rng As Range
Dim x As Long
Dim y As Long
Dim N As Long

x = 10
y = 5
N = x& * y&

Set rng = ActiveCell.Resize(y, x)
rng.Formula = "=RandBetween(1," & N & ")"
rng.Value = rng.Value
Set rng = Nothing
End Sub
'----
You may also want to take a look at my "Special Randoms" workbook.
It can be downloaded at http://excelusergroup.org/media/
--
Jim Cone
Portland, Oregon USA



"matt3542"
wrote in message
Dear Forum,
I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)



  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default Creating a table of random numbers

Hi, Many thanks I eventually got that to work - one slight glitch is the fact
that I didn't want any duplicate values to occur, is there a way the code
below could be amended to get around this problem so that all the numbers
within the range appears only once? Thanks, Matt

"Gary''s Student" wrote:

Once the range has been selected:

Sub hfakdf()
For Each r In Selection
r.Formula = "=int(Rand() *" & Selection.Count & "+1)"
Next
End Sub

--
Gary''s Student - gsnu200802


"matt3542" wrote:

Dear Forum,

I am relatively new to VBA programming and as such would very much
appreciate any help with regards to writing VBA code that would allow me to
create a loop to compile a X (where x represents the number of columns
provided by a user via an inputbox) by Y (where y represents the number of
rows, again provided by an input box) size table with each cell having a
random value in it where the range of random numbers is between 1 and the
total number of cells. I have been tinkering with the notation -
ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS * Rnd) + 1) but have not
managed to get it to work. Can anyone suggest a solution that uses the above
notation as I would like to understand more and have other areas of work that
I could apply its principles to.

Any help gratefully received
Regards
Matt




- Create a new workbook
- Setup an InputBox to ask the user for their required number of columns for
a table of data (x)
- Setup an InputBox to ask the user for their required number of rows for a
table of data (y)
- Setup a loop to compile a x by y size table with each cell having a random
value in it where the range of random numbers is between 1 and the total
number of cells (tip: ActiveCell.FormulaR1C1 = Int((TOTAL NUMBER OF CELLS *
Rnd) + 1)

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
getting numbers divisible by 4 from random numbers in ascending order ramana Excel Worksheet Functions 6 June 19th 07 06:41 PM
Creating Unique Random Numbers? Ozgur Pars[_2_] Excel Programming 7 September 28th 06 11:42 AM
Can Excel pick random numbers from 1-300 and not repeat numbers? Julian Excel Discussion (Misc queries) 1 June 7th 06 07:17 AM
Non-random numbers generated by excel's data analysis random gener Allie Excel Worksheet Functions 10 September 17th 05 06:19 AM
Non-random numbers generated by excel's data analysis random gener Harlan Grove Excel Discussion (Misc queries) 2 September 13th 05 04:06 PM


All times are GMT +1. The time now is 03:17 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"