31 August 2023

Ruchome wykresy

Wyobraźmy sobie, że chcemy pokazać na wykresie zmienność pewnych wartości w czasie np. zaobserwować obciążenie wielu serwerów lub opóźnienia na stanowiskach pracy lub dowolną funkcję której rozkład zmienia się w czasie. W niniejszym odcinku chciałbym Wam pokazać jak łatwo osiągnąć efekt zmiany czasu zarówno ręcznie jak i w pełni automatycznie dzięki makrom.

Ruchome wykresy
theme-w-ico
theme-ico

Opis filmu

Na początek wybierzmy sobie przykładowe dane pogrupowane w 20 kolumn i 50 wierszy jak na poniższym zdjęciu

 

……………………..

 

 

 

W kolumnie A mamy numerację kolejnych wierszy zaś w wierszu 1 miejsce na wybrane przez nas w danej chwili dane. W komórce B1 wpiszmy formułę =PRZESUNIĘCIE(B1;$A1;0) i rozciągnijmy do kolumny U. Teraz gdy w komórkę A1 wpiszemy numer interesującego nas wiersza jego dane zostaną przeniesione do wiersza pierwszego. Następnie wykonajmy wykres danych przeniesionych do wiersza 1 poprzez zaznaczenie obszaru B1:U1 oraz  Wstawianie -> Wykres Liniowy. Uzyskamy następujący efekt

 

 

.

Teraz dodajmy sobie do paska narzędzi dwie kontrolki które umożliwią nam proste sterowanie wykresem poprzez Dostosuj pasek narzędzi Szybki dostęp -> Więcej poleceń  wybór Wszystkie polecenia oraz dodanie Pasek przewijania (formant formularza) i Przycisk (formant formularza)

 

Następnie dodajmy sobie pasek przewijania obok naszego wykresu i skonfigurujmy go wciskając prawy klawisz myszy oraz Formatuj formant

 

Wpiszemy Wartość minimalna=1 (pierwszy wiersz z danymi ), Wartość maksymalna=50 (ostatni wiersz z danymi) i Łącze komórki do $A$1. Teraz przesuwając suwakiem możemy obserwować jak zmienia się nasz wykres w zależności od położenia suwaka.

Gdy już umiemy zmieniać wykres ręcznie zróbmy to samo automatycznie. Utwórzmy nowe makro wybierając Menu -> Widok -> Makra -> Wyświetl makra  wpisanie nazwy np. Automat1 oraz wciśnięcie Utwórz

 

A następnie skopiujmy poniższe makro które dzięki pętli For będzie zmieniać wartości w komórce A1 od 1 do 50

 

Public Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As LongPtr)

‘dodanie biblioteki zawierającej funkcję Sleep

 

Sub Automat1()

‘ Automat1 Makro

    Application.Calculation = xlManual             

    For i = 1 To 50        

        Sheets(“Odcinek014_1”).Cells(1, 1) = i      

   Calculate                                  

ActiveSheet.ChartObjects(1).Activate

       Sleep (100)       

        Next    

       Application.Calculation = xlAutomatic  

End Sub        

‘ Wyłączenie automatyczego przeliczania

‘ Dla i od 1 do 50

‘ Wpisz w A1 wartość i

‘ Przelicz teraz

‘ Aktywuj ponownie wykres

‘ zaczekaj 100ms

‘ następne i

‘ Włącz automatyczne przeliczanie

Kolejno dodajmy przycisk do arkusza z wykresem i przypiszmy do niego nasze makro

Możemy zobaczyć jak po wciśnięciu przycisku wykres nam się automatycznie zmienia. Szybkość zmian zależy od mocy obliczeniowej naszego komputera oraz parametru wpisanego w funkcji Sleep(?)

 

Jeżeli chcecie zobaczyć bardziej spektakularny efekt proponuję użyć np. funkcji sin(a(x+t))*sin(ay) gdzie t jest naszym zmiennym w czasie parametrem, wartość a zaś określa gęstość fal na wykresie. Funkcja ta przy wykorzystaniu wykresu powierzchniowego może wyglądać następująco

A po dodaniu przycisku analogicznie jak w poprzednim przykładzie oraz poniższego makra daje ciekawe efekty wizualne.

Sub Automat2()

‘ Automat1 Makro

 

    Application.Calculation = xlManual

For i = 1 To 100

Sheets(“Odcinek014_2”).Cells(2, 1) = i

Calculate

ActiveSheet.ChartObjects(1).Activate

Sleep (100)

Next

Application.Calculation = xlAutomatic

End Sub

 

‘ Wyłączenie automatycznego przeliczania

‘ Dla i od 1 do 100

‘ Wpisz w A2 wartość i

‘ Przelicz teraz

‘ Aktywuj ponownie wykres

‘ zaczekaj 100ms

‘ następne i

‘ Włącz automatyczne przeliczanie

 

 

   

Zachęcam Was do własnych eksperymentów z ruchomymi danymi lub funkcjami. Gdybyście potrzebowali pomocy lub mieli jakieś ciekawe pomysły w tym zakresie zapraszam do kontaktu na adres konrad.pogodz@itch.pl

 

 

Pobierz darmowy materiał szkoleniowy:

Zgłoszenie serwisowe

Wprowadź dane swojej firmy:

Potrzebujesz ofertę?