Imaš dve petlje. Jednu po kolonama i drugu (unutrašnju) po redovima. Nakon što generišeš jednu kolonu sortiraš je. Efikasnije rešenje bilo bi da se umesto sortiranja koristi generisanje slučajnih brojeva većih (odnosno manjih) od prethodno generisanog u toj koloni, kao što predlaže 3okc, ali ne znam uslove zadatka - ukoliko je generisan slučajni broj na granici (npr 999 u neparnoj koloni) onda će i svi naredne vrednosti u toj koloni biti iste?!
U primeru matrica se upisuje na aktivnom listu od celije A1.
Code:
Sub GenMatrica()
' Generise matricu nxn za zadato n
' pod sledecim uslovima
' neparne kolone sadrze slucajno generisane neparne brojeve 1-999 u rastucem redosledu
' parne kolone sadrze slucajno generisane parne brojeve 2-1000 u opadajucem redosledu
Dim n As Integer, rw As Integer, cl As Integer
Dim rndValue As Integer
Dim sh As Worksheet
upperbound = 500
Set sh = ActiveSheet
n = InputBox("Unesi dimenziju matrice n:")
Randomize
Application.ScreenUpdating = False ' ukida se osvezavanje ekrana
For cl = 1 To n
' Generisanje kolone
For rw = 1 To n
rndValue = Int(upperbound * Rnd + 1)
sh.Cells(rw, cl).Value = 2 * rndValue - cl Mod 2
Next rw
'Sortiranje kolone
If cl Mod 2 = 1 Then ' neparna kolona
sh.Range(sh.Cells(1, cl), sh.Cells(n, cl)).Sort _
Key1:=sh.Cells(1, cl), Order1:=xlAscending, Header:=xlNo
Else ' parna kolona
sh.Range(sh.Cells(1, cl), sh.Cells(n, cl)).Sort _
Key1:=sh.Cells(1, cl), Order1:=xlDescending, Header:=xlNo
End If
Next cl
Application.ScreenUpdating = True
End Sub
P.S.
Citat:
Neparan broj ne dobijaš generisanjem slučajnog iz neparnih granica, nego: isto kao i parni, pa mu onda oduzmeš 1. :)
Potpuno tačno, izgleda da sa godinama klikeri počinju da otkazuju :)
[Ovu poruku je menjao Jpeca dana 02.03.2009. u 16:08 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?