ID tematu: 27476
 |
Losowanie - prośba o pomoc |
| Autor |
Wiadomość |
nygus99
słuchacz

Posty: 5
|
Wysłany: 2012-01-22, 12:42 Losowanie - prośba o pomoc
|
|
|
Proszę o pomoc w napisaniu programu, jestem zielony w temacie, a muszę to oddać na zaliczenie.
Napisz program, który wylosuje dwie liczby należące do przedziału [1, 40], a następnie wyświetli w kolumnie A wszystkie liczby mieszczące się w przedziale między mniejszą a większą z tych liczb.
Z góry dziękuje. |
|
 | ID posta:
145593
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Farhatek
Starszy Forumowicz


Pomógł: 6 razy Posty: 39
|
Wysłany: 2012-01-22, 12:57
|
|
|
| A coś sam zrobiłeś? |
|
 | ID posta:
145597
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
nygus99
słuchacz

Posty: 5
|
Wysłany: 2012-01-22, 13:52
|
|
|
Zacząłem tak;
| Kod: | Sub liczby()
Dim losowanie(2)
For i = 0 To 1
taSama = False
liczba = Int((40 - 1 + 1) * Rnd) + 1
ActiveCell.FormulaR1C1 = liczba
ActiveCell.Offset(1, 0).Select |
losuje dwie liczby, nie wiem jak zapisać,aby z wylosowanych wyświetlił wyświetli w kolumnie A wszystkie liczby mieszczące się w przedziale między mniejszą a większą z tych liczb.
Edit:
Używaj znaczników [code]. wilow |
|
 | ID posta:
145602
|
|
|
 |
Farhatek
Starszy Forumowicz


Pomógł: 6 razy Posty: 39
|
Wysłany: 2012-01-22, 14:47
|
|
|
Ja wymyśliłem coś takiego:
| Kod: | Sub losowanie()
Range("A:A").ClearContents
Dim los1, los2, odleglosc, i, minimum As Integer
Do
los1 = Int((40 - 1 + 1) * Rnd) + 1
los2 = Int((40 - 1 + 1) * Rnd) + 1
Loop While los1 = los2
dlugosc = Abs(los1 - los2)
minimum = WorksheetFunction.Min(los1, los2)
For i = 1 To dlugosc - 1
Cells(i, 1) = minimum + 1
minimum = minimum + 1
Next i
End Sub
|
|
|
 | ID posta:
145605
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
nygus99
słuchacz

Posty: 5
|
Wysłany: 2012-01-22, 17:27
|
|
|
| Farhatek napisał/a: | Ja wymyśliłem coś takiego:
| Kod: | Sub losowanie()
Range("A:A").ClearContents
Dim los1, los2, odleglosc, i, minimum As Integer
Do
los1 = Int((40 - 1 + 1) * Rnd) + 1
los2 = Int((40 - 1 + 1) * Rnd) + 1
Loop While los1 = los2
dlugosc = Abs(los1 - los2)
minimum = WorksheetFunction.Min(los1, los2)
For i = 1 To dlugosc - 1
Cells(i, 1) = minimum + 1
minimum = minimum + 1
Next i
End Sub
|
|
Może sie mylę ale ten kod losuje kolejne liczby. |
|
 | ID posta:
145612
|
|
|
 |
Farhatek
Starszy Forumowicz


Pomógł: 6 razy Posty: 39
|
Wysłany: 2012-01-22, 18:07
|
|
|
| Losuje jedną liczbę, losuje drugą liczbę a jeśli są takie same powtarza losowanie. |
|
 | ID posta:
145619
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
nygus99
słuchacz

Posty: 5
|
Wysłany: 2012-01-25, 22:41
|
|
|
| Kod: | Sub lotto()
Range("B1").Select
For i = 0 To 1
liczba = Int((40 - 1 + 1) * Rnd) + 1
ActiveCell.FormulaR1C1 = liczba
ActiveCell.Offset(1, 0).Select
Next
Dim Warunek As Boolean
Dim liczba1, liczba2
liczba1 = Range("B1").Value
liczba2 = Range("B2").Value
Warunek = liczba1 > liczba2
If Warunek = True Then
Range("A1").Value = liczba1
Else
liczba1 = Range("B1").Value
liczba2 = Range("B2").Value
Warunek = liczba1 < liczba2
Range("A1").Value = liczba2
End If
End Sub |
Pomocy. Mnie juz ręce opadają nie mam pomysłów.
Edit:
Używaj znaczników [code]. wilow |
|
 | ID posta:
146196
|
|
|
 |
Farhatek
Starszy Forumowicz


Pomógł: 6 razy Posty: 39
|
Wysłany: 2012-01-26, 20:44
|
|
|
A co jest nie tak w tym co ja napisałem? Może uda mi się skorygować.
Napisz program, który wylosuje dwie liczby należące do przedziału [1, 40], a następnie wyświetli w kolumnie A wszystkie liczby mieszczące się w przedziale między mniejszą a większą z tych liczb.
Tak działa kod, który napisałem... |
|
 | ID posta:
146341
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
nygus99
słuchacz

Posty: 5
|
Wysłany: 2012-01-26, 21:36
|
|
|
| Teraz już wiem. Nareszcie załapałem. Dzięki za pomoc |
|
 | ID posta:
146349
|
|
|
 |
stalowy77
świeżak

Posty: 3
|
Wysłany: 2012-02-02, 12:04
|
|
|
proste i miłe w obsłudze makro:
| Kod: | Sub losowanie_dwóch()
Dim y, z, c, k, j As Single
losuj:
Range("a1").EntireColumn.ClearContents
y = Int(Rnd * 40) + 1
z = Int(Rnd * y) + 1
If y = z Then
h = h + 1
GoTo losuj
End If
MsgBox z & Chr(13) & y
'ponieważ z<y dla tak zdefiniowanych z i y
For c = z To y (można zrobić c=z+1 to y-1, by nie uwzględniać wylosowanych liczb)
j = j + 1
Cells(j, 1) = c
Next c
End Sub |
pozdrawiam
Edit: Proszę stosować tagi [code] |
_________________ The world is full of kings and queens that will blind your eyes and steal your dreams. |
|
 | ID posta:
147121
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
|
|