-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Delila_1
veterán
-
Delila_1
veterán
Most tetszőleges név, és tetszőleges terület esetén is elkészíti a beosztást. Nincs benne viszont, hogy minden terület legalább 1× szerepeljen. Nem minden esetben van megfelelő megoldás, pl. ha sok az eszkimó (ember), és kevés a fóka (terület).
Sub Terulet()
Dim sor As Integer, oszlop As Integer, vel As Integer, i As Integer, soruj As Integer
Dim NevUsor As Long, TerUsor As Long
Dim tomb()
NevUsor = Range("A" & Rows.Count).End(xlUp).Row
TerUsor = Range("G" & Rows.Count).End(xlUp).Row
ReDim tomb(1 To TerUsor)
Application.ScreenUpdating = False
Range("B4:E" & NevUsor) = ""
For sor = 4 To NevUsor
UjSor:
For oszlop = 2 To 5
UJRA:
Randomize
vel = Round(Rnd() * (TerUsor - 3) + 3, 0) '
If tomb(vel) > 0 Then GoTo UJRA ' Ha volt már a sorszám, akkor újra generál
tomb(vel) = 1
Next
oszlop = 2
For i = 1 To TerUsor 'Beírja a területet, lenullázza a tömböt
If tomb(i) = 1 Then
Cells(sor, oszlop) = Cells(i, "G")
oszlop = oszlop + 1
End If
tomb(i) = 0
Next i
For soruj = 3 To TerUsor 'Van-e 3× a terület?
If Application.CountIf(Range("$B$4:$E" & NevUsor), Range("G" & soruj)) > 3 Then
Range("B" & sor & ":E" & sor) = ""
For i = 1 To TerUsor
tomb(i) = 0
Next
GoTo UjSor
Exit For
End If
Next
Next
Application.ScreenUpdating = True
End Sub -
Delila_1
veterán
A makró összeállítja a területek kiosztását.
Sub Terulet()
Dim sor As Integer, oszlop As Integer, vel As Integer, i As Integer, soruj As Integer
Dim tomb(1 To 36) As Integer
Application.ScreenUpdating = False
Range("B4:E23") = ""
For sor = 4 To 23
UjSor:
For oszlop = 2 To 5
UJRA:
Randomize
vel = Round(Rnd() * 33 + 3, 0) '3 és 36 közötti véletlenszámot ad
If tomb(vel) > 0 Then GoTo UJRA ' Ha volt már a sorszám, akkor újra generál
tomb(vel) = 1
Next
oszlop = 2
For i = 1 To 36 'Beírja a területet, lenullázza a tömböt
If tomb(i) = 1 Then
Cells(sor, oszlop) = Cells(i, "G")
oszlop = oszlop + 1
End If
tomb(i) = 0
Next i
For soruj = 3 To 36 'Van-e 3× a terület?
If Application.CountIf(Range("$B$4:$E$23"), Range("G" & soruj)) > 3 Then
Range("B" & sor & ":E" & sor) = ""
For i = 1 To 36
tomb(i) = 0
Next
GoTo UjSor
Exit For
End If
Next
Next
Application.ScreenUpdating = True
End Sub -
hhheni
tag
ez mindig azt a sorrendet fogja adni, ahogyan g3-tól kezdve vannak
ha ez is szempont, akkor a h oszlopban mellé teszel vél() függvénnyel egy oszlopot, és havonta rendezed
persze, lehetnek még finomító kívánságok, pl.:
1. a 34 területből ne minden hónapban legyenek ugyanazok 3-szor ill. 2-szer,
2. egy héten belül ne kerüljön sorra 2* ugyanaz a terület stb. -
hhheni
tag
Új hozzászólás Aktív témák
- Autós topik
- Crimson Desert - Íme a végleges gépigény
- BestBuy topik
- exHWSW - Értünk mindenhez IS
- gban: Ingyen kellene, de tegnapra
- E-roller topik
- Abarth, Alfa Romeo, Fiat, Lancia topik
- Kertészet, mezőgazdaság topik
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- VoIP telefonálás
- További aktív témák...
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Vírusirtó, Antivirus, VPN kulcsok GARANCIÁVAL!
- GYÖNYÖRŰ iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3938
- AZONNAL KÉSZLETRŐL! Intel Core i5 14600K 64GB 6000MHz RAM 2TB Gen4 SSD RTX 5060 8GB FSP 750W
- Részletfizetés. BankMentes. Kamatmentes. Új noblechairs EPIC műbőr FEKETE - FEKETE. 3 év garancia!
- Lenovo LEGION 5 PRO Ultra 9 275HX 32GB RAM 1TB SSD RTX 5070 Ti 8GB 16" QHD+ 3év Prémium GAR
- iPhone 15 Pro Max 256GB 100% (1év Garancia)- ÚJ EREDETI AKKUMULÁTOR - AKCIÓ
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Fferi50