< návrat zpět

MS Excel


Téma: Náhodné hodnoty rss

Zaslal/a 2.12.2023 18:45

Zdravím, měl bych dotaz, lze udělat generátor náhodných hodnot - písmena?
příklad 5 radku počet dni a 3 sloupce jména a k tomu přidělovat náhodné písmeno z databáze (sektor) ale aby nebyla dvě stejná písmenka třeba v pondělí u dvou jmen Děkuji

Zaslat odpověď >

#055733
elninoslov
Vytvorte manuálne takú vzorovú tbl, ako by to malo vyzerať. Makrom to nebude problém.

PS: Pre priloženie prílohy sa musíte registrovať - Freecitovat
#055734
avatar
Posílám moji tabulku, když tam dostanu náhodné písmena někdy jsou stejné u dvou dělníků v jednom dni to bych nechtěl
Příloha: jpg55734_fb_img_1701543871800.jpg (11kB, staženo 17x)
55734_fb_img_1701543871800.jpg
citovat
#055738
elninoslov
Obrázok??? To vážne? S manuálne nevytvorenou tabuľkou, znázorňujúcou príklad, ako by mal výsledok vyzerať?

Ide totiž ešte aj o nejaké podmienky, všakže? Aby napr. jeden človek nevyfasoval celý týždeň rovnaký sektor, alebo aby všetci nemali rovnaký sektor 2 po sebe, a mnohé ďalšie nad ktorými sa mi nechce zamýšľať. Že niektoré môžu ľahko vzniknúť je isté.

Takže priložte prílohu vo forme súboru xlsx, v ktorom tú tabuľku manuálne vyplníte, ako by mala vyzerať. Týmto Vás snáď prinútim pritom aj pouvažovať nad možnými neželanými stavmi/kombináciami 1
Ktoré nám samozrejme promptne zdelíte.

EDIT:
Jednoduché makro
Sub Generuj()
Dim Sek() As String, tS() As String, V() As String, i As Integer, y As Long, Nahoda As Long

Const POCET_RADKU As Long = 5
Const POCET_DELNIKU As Integer = 3

Randomize

With ThisWorkbook.Worksheets("Hárok1")
Sek = Split(Join(Application.Transpose(.Range("A4:A11").Value), ","), ",")
ReDim V(1 To POCET_RADKU, 1 To POCET_DELNIKU)

For y = 1 To POCET_RADKU
tS = Sek
For i = 1 To POCET_DELNIKU
Nahoda = Int(Rnd() * (UBound(tS) + 1))
V(y, i) = tS(Nahoda)
tS = Filter(tS, tS(Nahoda), False)
Next i
Next y

.Range("E4").Resize(POCET_RADKU, POCET_DELNIKU).Value = V
End With
End Sub
citovat
#055745
avatar
Dobrý večer, už jste mi předběhl omlouvám se. za podmínky bych byl rád aby se neopakoval sejný sektor u dvou dělníků v jednom dni a aby daný dělník neměl stejný sektor dva dny po sobě. Další podmínky nevím jaké jsou možnosti co vše se dá udělat. Omlouvám se jsem na uživatelský úrovni proto jsem se obrátil na odborníky 1
Příloha: xlsx55745_sesit.xlsx (11kB, staženo 4x)
citovat
#055752
elninoslov
Tak teda príklad:
Sub Generuj_Sektory()
Dim Sektory() As String, MozneSektory() As String, Vysledek() As String
Dim Den As Integer, Delnik As Integer, Pozice As Integer, Sektor As String, bOK As Boolean

Const POCET_DNI As Long = 5
Const POCET_DELNIKU As Integer = 3

Randomize

With ThisWorkbook.Worksheets("Hárok1")
Sektory = Split(Join(Application.Transpose(.Range("A4:A11").Value), ","), ",")
If UBound(Sektory) + 1 < POCET_DELNIKU Then MsgBox "Málo sektorů.", vbCritical: Exit Sub
ReDim Vysledek(1 To POCET_DNI, 1 To POCET_DELNIKU)

For Den = 1 To POCET_DNI
MozneSektory = Sektory

For Delnik = 1 To POCET_DELNIKU
bOK = False

While Not bOK
Pozice = Int(Rnd() * (UBound(MozneSektory) + 1))
Sektor = MozneSektory(Pozice)
bOK = Den = 1
If Not bOK Then
bOK = Sektor <> Vysledek(Den - 1, Delnik)
If Not bOK Then If UBound(MozneSektory) = 0 Then Den = Den - 1: Exit For
End If
Wend

MozneSektory(Pozice) = "•"
MozneSektory = Filter(MozneSektory, "•", False)
Vysledek(Den, Delnik) = Sektor
Next Delnik
Next Den

.Range("E4").Resize(POCET_DNI, POCET_DELNIKU).Value = Vysledek
End With
End Sub

Rýchlejšie by to bolo asi cez kolekcie alebo nahrádzanie v stringu, ale myslím, že pre Vaše potreby je toto cez Filter aj tak ako delo na komára 5
Příloha: zip55752_generuj-nahodne-sektory2.zip (18kB, staženo 3x)
citovat
#055754
avatar
mockrát děkuji. 1citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Oddělovač polí

Milan-158 • 1.3. 16:01

Oddělovač polí

Whooocak • 1.3. 15:14

Vkládání dat z formuláře na zamknutém listu.

Milan-158 • 1.3. 15:12

Vlastne planovanie zmien

Anonym • 1.3. 7:56

Vkládání dat z formuláře na zamknutém listu.

Začátečník • 28.2. 19:34

Vkládání dat z formuláře na zamknutém listu.

Zdenys84 • 28.2. 19:05

Vkládání dat z formuláře na zamknutém listu.

Zdenys84 • 28.2. 19:00