Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70341 Skopiuj do schowka Wykres wykonywanych czynności przez pracownika
Autor Wiadomość
Ochmanochman
Świeżak


Wersja: Win Office 365
Posty: 1
Wysłany: 05-03-2021, 18:01   Wykres wykonywanych czynności przez pracownika

Cześć,

Mój pierwszy post-request. Natrafiłem na problem, którego nie jestem w stanie sam przeskoczyć.
Potrzebuję stworzyć 3 wykresy na podstawie danych, które mogę wygenerować z raportu - czynności wykonywane przez pracownika.
Liczba czynności jest ograniczona, ale powtarza się w trakcie dnia.
Dla każdej czynności mam czas rozpoczęcia i czas trwania.
Dwie czynności nie mogą być wykonywane jednocześnie.

1. Oczywistym wyborem wydaje się być Wykres Gantta.
Niestety, ze względu na to, że czynności wykonywane są w wybranej przez pracownika kolejności (nie mam na to wpływu) - dane są uporządkowane po kolejności występowania czynności, po godzinie rozpoczęcia.

Chciałbym stworzyć wykres w taki sposób, by pokazywał czas wykonywania czynności oraz przerwy między nimi (przerwy traktujemy jako wypełniacz, wybieram brak wypełnienia - nie są widoczne).

Sam wykres tutaj nie jest problemem. Bardziej chodzi o formatkę, które na podstawie danych pokaże je w przedstawiony sposób (lub inny, umożliwiający utworzenie wykresu). Nie potrafię przeskoczyć przedstawienia danych w taki sposób. Tabelkę z załącznika zrobiłem ręcznie.


2. Drugim wykresem byłyby czynności rozbicie per godzina, tj.
Na osi Y godziny pracy (6-22), na osi X czas od 00 minut do 60 minut.
Wykres słupkowy pokazywać miałby pracę pracownika w danej godzinie.



3. Próbowałem przedstawić to w 3. sposób - bez rozbicia na godziny - niestety w 2 i 3 przypadku natrafiłem na następujące problemu:
Czynności sortują się nie kolejnością godzinową, a alfabetycznie.
Jeśli daną czynność pracownik rozpocznie o godzinie 6:50 i trwać będzie do 8:10, to nie pokazuje czynności o 7:00.

Próbowałem wykresów przestawnych, tabel. niestety mój stan wiedzy nie wystarcza.

W załączniku przykładowy raport oraz docelowy wygląd wykresu (oraz przedstawienia danych).

Jestem otwarty na wszystkie propozycje, chętnie wypróbuję coś nowego.
Jeśli chodzi o VBA - jestem nowicjuszem, ale coś już pisałem. Jeśli się da, chętnie nad tym popracuję.

Czynności - wykres Gantta.xlsx
Pobierz Plik ściągnięto 10 raz(y) 41.31 KB

ID posta: 401544 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4228 razy
Posty: 7959
Wysłany: 09-03-2021, 21:59   

Może najpierw dane do Gantta - to co zrobiłeś ręcznie w ostatnim arkuszu zrobi automatycznie takie makro:

Kod:
Sub test()
Dim CzasStartu As Date
Dim i As Long, OstatniWiersz As Long, AktualnaKolumna As Long, AktualnyWiersz As Long
Dim opis As String, tablica As Variant
Sheets("Dane").Activate
CzasStartu = Range("C2").Value
OstatniWiersz = Cells(Rows.Count, "B").End(xlUp).Row
If Range("F1") <> "" Then Range("F1").CurrentRegion.ClearContents
opis = "Start pierwszego;oczekiw. na 1 czynność;trwanie 1;Start 2giego ;Przerwa między 1, a 2 ;trwanie 2;Start 3giego ;Przerwa między 2, a 3;trwanie 3;Start 4go ;Przerwa między 3, a 4;trwanie 4" 'do pozmieniania i skrócenia opisów
tablica = Split(opis, ";")
Range("G1").Resize(1, UBound(tablica) + 1).Value = tablica
Columns("B:B").Copy Columns("F:F")
Range("F1:F" & OstatniWiersz).RemoveDuplicates Columns:=1, Header:=xlYes
For i = 2 To OstatniWiersz
  AktualnyWiersz = Columns("F:F").Find(what:=Cells(i, "B").Value, lookat:=xlWhole, LookIn:=xlValues).Row
  AktualnaKolumna = Cells(AktualnyWiersz, Columns.Count).End(xlToLeft).Column
  Cells(AktualnyWiersz, AktualnaKolumna + 1).Value = Cells(i, "C").Value
  If AktualnaKolumna = 6 Then 'kolumna F
'   tak by było wg Twojego wzoru, ale to niepoprawne
'   Cells(AktualnyWiersz, AktualnaKolumna + 2).Value = Cells(i, "C").Value - CzasStartu
'   tak ma być:
    Cells(AktualnyWiersz, AktualnaKolumna + 2).Value = 0
  Else
    Cells(AktualnyWiersz, AktualnaKolumna + 2).Value = Cells(i, "C").Value - Cells(AktualnyWiersz, AktualnaKolumna - 2).Value - Cells(AktualnyWiersz, AktualnaKolumna).Value
  End If
  Cells(AktualnyWiersz, AktualnaKolumna + 3).Value = Cells(i, "D").Value
  Cells(AktualnyWiersz, AktualnaKolumna + 1).Resize(1, 3).NumberFormat = "hh:mm:ss"
Next i
End Sub


Celowo nie ma wymyślnej konstrukcji i działa bezpośrednio na komórkach (wolniej niż w pamięci), żebyś łatwo mógł go zrozumieć i ew. modyfikować.

PS. Wg mmnie Twój Gantt był niepoprawny - każda czynność poza A była poprzesuwana w prawo o różnicę między czasem zaczęcia pierwszego wykonania a 7 rano

PS2. zapewne robiłbym raz czas zaczęcia i czas trwania a potem dwie kolumny cyklicznie (czas przerwy i czas trwania. czas przerwy licząc jako różnice bieżącego czasu zaczęcia i sumy wszystkich czasów na lewo (pierwszy start, pierwsza długość i potem n razy ita przerwa + ita długość)

Czynności - wykres Gantta.xlsm
Pobierz Plik ściągnięto 6 raz(y) 57.3 KB

_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 401840 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe