Hej,
Mam za zadanie stworzyć narzędzie które na podstawie danych wejściowych (konkretnych) wygeneruje ''siatkę'' godzin pracy pracowników i wypluje konkretne zmiany 6-14; 7-15; 10-20 itd itd.
Ogólne działanie takowego makra powiedzmy mam, problem zaczyna się wtedy gdy makro musi mieć wymóg że w danym wierszu (wiersz to jeden pracownik) nie może być suma większa od 10.
Poniżej wklejam kod który udało mi się stworzyć, uzupełnia odpowiednio wartości na podstawie danych wejściowych tylko bez tego wymogu (suma wiersza nie większa niż 10).
Sub WypelnijKomorkiJedynkami()
Dim ws As Worksheet
Dim col As Integer
Dim row As Integer
Dim suma As Integer
Dim liczba_osob As Integer
' Ustaw arkusz, na którym chcesz działać
Set ws = ThisWorkbook.Sheets("01")
' Wyczyść zakres G5:AD36
ws.Range("G5:AD36").ClearContents
' Iteruj przez kolumny od G do Y
For col = 7 To 30
' Pobierz liczbę osób w pracy w danej godzinie
liczba_osob = ws.Cells(2, col).Value
' Ustaw sumę kolumny na 0
suma = 0
' Uzupełnij komórki wartością 1 do momentu, gdy suma wiersza będzie równa liczbie osób w pracy
For row = 5 To 36
' Sprawdź, czy suma nie przekracza liczby osób w pracy
If suma < liczba_osob Then
ws.Cells(row, col).Value = 1
suma = suma + 1
Else
' Jeśli suma przekroczyła liczbę osób w pracy, zostaw komórkę pustą
If Not IsEmpty(ws.Cells(row, col)) Then
ws.Cells(row, col).ClearContents
End If
End If
Next row
Next col
End Sub
Poniżej w załącznikach też zrzuty ekranu - w jednym jest uzupełnienie "1" przez makro, w drugim uzupełnienie "1" przeze mnie w sposób w jaki powinno makro uzupełniać.
Tak w ramach wdrożenia, w zakresie G2:AD2 jest podana ilość pracowników w każdej godzinie, godziny są wypisane w G1:AD1.
Czy jest ktoś w stanie mi pomóc, ewentualnie jakoś naprowadzić żeby to hulało?
Chyba że da się pominąć totalnie te wszystkie "1" i bezpośrednio wygenerować poszczególne zmiany 6-14, 7-15 itd w oparciu o zapotrzebowanie które jest podane w G2:AD2...
Tak ma być:
A tak uzupełnia makro: