Avatar billede folj Forsker
05. august 2016 - 10:24 Der er 5 kommentarer

Excel - VBA: Kan jeg sætte hold med den besætning jeg har til rådighed?

Jeg har et lille udfordring.
Min bemandingsplan kører fint og jeg har en procedure der kan liste hvem har vi på vagt en given dag - typisk 8-12 personer.

Nu har vi så i et separat sheet, defineret hvilke roller de enkelte personer kan udfylde. Hvis du gerne vil sætte billede på så brug billedet fra en flybesætning, Der skal være en der kan tage rollen som luftkaptajn, en pilot, andenpilot, og en del andre personer som kabinepersonale osv...

Så bliver det næste jo at vi gerne vil teste om dagens bemanding vil kunne udfylde alle roller. Rolle1 til Rolle6 skal besættes, da det er vores minimum for at kunne komme igennem en vagt på forsvarlig vis.

Jeg har lavet et function der fodres med initialer og rollenavn, og så returnerer den False eller True som svar på om personen kan påtage sig rollen.
Function TestInitVsRolle(Init As String, Role As String)



Jeg skal nu til at bygge min procedure der skal teste om alle roller kan dækkes med den besætning vi har til rådighed.

Sub IsAllRolesStaffed()

Const BesaetningsSheet As String = "HR_overblik" ' definerer navn på det sheet der indeholder initialer og roller
Const DagholdRow As Integer = 5 ' definierer i hvilken række initialer med dagen besætning findes
Const BesaetningStartCol As Integer = 12 ' definiere i hvilken kolonne initialer starter
Const BesaetningEndCol As Integer = 24 ' og i hvilken kolonne initialer slutter

' først hentes initialer på dagens besætning ind i et array
BesaetningArray = Sheets(BesaetningsSheet).Range(Cells(DagholdRow, BesaetningStartCol), Cells(DagholdRow, BesaetningEndCol))


'gennemløb array med dagens besætning

'Hvis ikke der sættes komplet hold i første gennemløb - så laves flere gennemløb med besætning i forskellig rækkefølge.

'når eller hvis det lykkes at sætte et komplet hold, så laves der ikke flere gennemløb,


End Sub[/div]

Jeg har ikke kodet proceduren færdig endnu, da jeg gerne vil have nogle input hvis nogen har noget erfaring med at sætte hold med en besætning vi har til rådighed.
Hvordan gribes det bedst an?
Avatar billede folj Forsker
05. august 2016 - 10:31 #1
Det lykkedes ikke at opsætte min kode i en blok, selvom jeg ellers forsøgte...
jeg gentager den lige her:
Sub IsAllRolesStaffed()

Const BesaetningsSheet As String = "HR_overblik" ' definerer navn på det sheet der indeholder initialer og roller
Const DagholdRow As Integer = 5 ' definierer i hvilken række initialer med dagen besætning findes
Const BesaetningStartCol As Integer = 12 ' definiere i hvilken kolonne initialer starter
Const BesaetningEndCol As Integer = 24 ' og i hvilken kolonne initialer slutter

' først hentes initialer på dagens besætning ind i et array
BesaetningArray = Sheets(BesaetningsSheet).Range(Cells(DagholdRow, BesaetningStartCol), Cells(DagholdRow, BesaetningEndCol))


'gennemløb array med dagens besætning

'Hvis ikke der sættes komplet hold i første gennemløb - så laves flere gennemløb med besætning i forskellig rækkefølge.

'når eller hvis det lykkes at sætte et komplet hold, så laves der ikke flere gennemløb,


End Sub
Avatar billede bjarnehansen Seniormester
05. august 2016 - 11:39 #2
er det muligt at opload dit ark så var det letter at få et overblik....
Avatar billede folj Forsker
05. august 2016 - 12:39 #3
@bjarnehansen:
Nej. Ikke umiddelbart. Jeg kan heller ikke se hvad det skulle bidrage med udover det jeg har lagt frem.
Alle planer hod Novo Nordisk er i firmaets øjne forretningskritiske (i en eller anden grad), om skal ikke i hænderne på skumle personer.

Mit spørgsmål omhandler jo kun data der er hentet ind i arrays.
Det er disse arrays der gennemløbes i mine VBA-procedurer.

Hvis du har nogle erfaringer med en eller anden form for maskingenereret holdsætning, så vil jeg gerne høre herom.
alle bidrag til hvordan det skal gribes modtages med kyshånd
Avatar billede bjarnehansen Seniormester
05. august 2016 - 13:05 #4
det kunne være et test ark for letter at forstå dit problem,
selvfølge skal du ikke sende fortrolige data.

jeg har rodet med at lave turnus planer for at vagt sætte chauffører i bus kørsel.
Avatar billede ebea Ekspert
05. august 2016 - 15:54 #5
Til dit svar i #3 - mener du seriøst, at der er skumle personer herinde?
At have et Ark at se dine "tanker" i, er som regel altid det bedste. Så derfor var det nok at han spurgte!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester