Makropolecenia i wbudowany język

🎯 Po co Ci to?

Co tydzień robisz w arkuszu to samo: import pliku, usunięcie zbędnych kolumn, sortowanie, formatowanie, wykres. Dwadzieścia klików, dziesięć minut, nuda — i ryzyko, że któryś raz klikniesz inaczej. Arkusze mają na to odpowiedź dwupoziomową: makropolecenia (nagraj sekwencję czynności i odtwarzaj jednym przyciskiem) oraz wbudowany język programowania (napisz w arkuszu prawdziwy program). Dla Ciebie to moment szczególny: programowanie z działu 3, które w tym dziale chodziło w przebraniu formuł, wraca frontowymi drzwiami — z pętlami, warunkami i funkcjami operującymi na komórkach. Rozszerzenie podstawy wymaga znać oba poziomy.

✅ Czego się nauczysz

Po tej jednostce potrafisz:

  • nagrać, odtworzyć i przypisać do przycisku makropolecenie;
  • wyjaśnić, czym makro różni się od skryptu we wbudowanym języku — i kiedy które;
  • przeczytać prosty skrypt arkuszowy, rozpoznając w nim konstrukcje z działu 3.

🔁 Przypomnij sobie

Z 3.1–3.5: zmienne, pętle, warunki, funkcje; z 11.2: adresy komórek; z 1.4: automatyzacja = zapisany przepis.

📘 Wyjaśnienie

Poziom 1: nagraj makro. Rejestrator makr działa jak dyktafon czynności: włączasz nagrywanie, wykonujesz sekwencję (sortowanie, formatowanie, cokolwiek), zatrzymujesz — i arkusz zapamiętuje przepis. Od teraz odtwarzasz go jednym poleceniem albo przyciskiem wstawionym do arkusza. Zero programowania, natychmiastowy zysk: powtarzalne czynności przestają zjadać czas i przestają być podatne na literówki. Ograniczenia też są jasne: makro odtwarza dokładnie to, co nagrałeś — bez warunków („jeśli plik ma kolumnę X…"), bez pętli („dla każdego arkusza…"), bez reakcji na dane. Dyktafon, nie muzyk.

Poziom 2: wbudowany język. Pod maską rejestrator zapisuje makro w języku programowania wbudowanym w arkusz (różne arkusze mają różne języki — od pochodnych Basica po JavaScript i Pythona; idea wszędzie ta sama). A skoro to język — można w nim pisać samemu, i to zmienia ligę:

dla każdego wiersza od 2 do ostatniego:      # pętla! (3.3)
    jeżeli komórka[wiersz, kolumna C] < 50:  # warunek! (3.2)
        pokoloruj wiersz na czerwono
        licznik ← licznik + 1                # licznik! (3.3)
wpisz licznik do komórki E1

(Zapisujemy pseudokodem — konkretna składnia zależy od arkusza, logika nie.) To jest pełnoprawne programowanie: zmienne, pętle po wierszach, warunki na wartościach komórek, funkcje. Wszystko z działu 3 — tylko „tablicą" jest arkusz, a efekty widać natychmiast w komórkach. Skrypt umie to, czego makro nie umiało: decydować, powtarzać, reagować na dane, obsłużyć sto plików w pętli.

Kiedy które? Zasada praktyczna: jednorazową sekwencję kliknięć — nagraj; logikę zależną od danych — napisz. A najlepsza droga nauki języka Twojego arkusza: nagraj makro robiące z grubsza to, co chcesz, i przeczytaj wygenerowany kod — rejestrator jest darmowym nauczycielem składni (pokaże Ci, jak w tym języku nazywa się komórka, zakres, sortowanie), a Ty dopisujesz pętle i warunki, których dyktafon nie zna.

💭 Pomyśl: Automatyzujesz raport miesięczny: otwórz eksport z dziennika, usuń kolumny D i F, posortuj po nazwiskach, pokoloruj na czerwono uczniów ze średnią < 2, zapisz jako PDF. Które kroki nagrałbyś, a które wymagają skryptu — i czemu?

Sprawdź odpowiedź

Usuwanie kolumn, sortowanie, zapis do PDF — sztywne sekwencje, rejestrator je łyknie. Kolorowanie zależne od wartości („średnia < 2") to warunek na danych — dyktafon nagra co najwyżej pokolorowanie konkretnych wierszy z dnia nagrania, a Ty potrzebujesz pętli z warunkiem: skrypt. (Furtka: kolorowanie od wartości załatwia też formatowanie warunkowe — wbudowana funkcja arkusza; automatyzacja zaczyna się od sprawdzenia, czy narzędzie już tego nie umie!) W praktyce robi się hybrydę: nagraj szkielet, dopisz logikę — dokładnie metoda „rejestrator jako nauczyciel".

⚠️ Uwaga, pułapka

Makra to kod — a kod z nieznanego źródła to ryzyko. Złośliwe makro w pobranym z sieci arkuszu może zrobić wszystko, co Ty przy komputerze: kasować pliki, wykradać dane, instalować szkodniki. Dlatego arkusze domyślnie blokują makra w pobranych plikach i pytają o zgodę — a „włącz makra" w pliku od nieznajomego to jedna z klasycznych dróg infekcji (całe rodziny wirusów makropoleceniowych przeszły do historii IT). Zasada: makra uruchamiaj tylko w plikach, którym ufasz; do bezpieczeństwa wrócimy w dziale 16, ale tę regułę stosuj już dziś.

🛠️ Teraz Ty

Nagraj makro: sortowanie Twojego dziennika z 11.3 po punktach malejąco + pogrubienie nagłówka; przypisz do przycisku i przetestuj. Potem zajrzyj do wygenerowanego kodu i znajdź w nim: adres zakresu, polecenie sortowania. Na koniec (ambitne): w edytorze skryptów napisz pętlę kolorującą na czerwono wiersze uczniów poniżej progu z E1 — szkielet z 📘, składnię podpowie nagrane makro i dokumentacja Twojego arkusza.

📐 Definicje tej lekcji

  • Makropolecenie — nagrana sekwencja czynności odtwarzana jednym poleceniem; bez warunków i pętli.
  • Wbudowany język arkusza — pełny język programowania operujący na komórkach/zakresach; makra są w nim zapisywane, skrypty pisze się samemu.
  • Zasada doboru — sztywna sekwencja → nagraj; logika na danych → napisz (a rejestrator uczy składni).

📌 Najważniejsze w pigułce

  • Makro = dyktafon czynności: świetne na powtarzalne sekwencje, ślepe na dane.
  • Wbudowany język = dział 3 w arkuszu: pętle po wierszach, warunki na komórkach, pełna automatyzacja.
  • Makra bywają wektorem ataku — uruchamiaj tylko z zaufanych źródeł.

🎒 Zadania

  1. Sklasyfikuj (makro / skrypt / wbudowana funkcja arkusza): (a) co tydzień ten sam układ trzech wykresów z nowych danych, (b) usuń wszystkie wiersze z pustą kolumną B, (c) podświetlaj na żółto wartości powyżej średniej, (d) scal 40 plików CSV w jedną tabelę.
Wskazówka i odpowiedź

(a) makro — sztywna sekwencja na świeżych danych. (b) skrypt — pętla z warunkiem na danych (usuwanie wierszy w pętli ma zresztą pułapkę indeksów z 9.1/3.4 — iteruj od dołu!). (c) wbudowane formatowanie warunkowe — zero kodu (najpierw sprawdź, czy narzędzie już to umie!). (d) skrypt — pętla po plikach, poza zasięgiem dyktafonu. Dobór poziomu automatyzacji to też decyzja inżynierska: najprostsze narzędzie, które wystarcza (1.6 pozdrawia).

  1. Wyjaśnij koledze, który boi się „prawdziwego programowania", czemu skoro radzi sobie z formułami JEŻELI i kopiowaniem, to skrypty arkuszowe są w jego zasięgu. Użyj analogii z tej książki.
Wskazówka i odpowiedź

Formuła =JEŻELI(...) TO warunek z programowania (3.2), kopiowanie formuły w dół TO pętla po wierszach (3.3), a komórka to zmienna z adresem (3.1) — on już programuje, tylko w składni arkusza. Skrypt zapisuje te same trzy pomysły jawnie, dokładając możliwość działań, których formuła nie zrobi (zmiana koloru, tworzenie plików). Najtrudniejsze pojęcia ma opanowane; zostaje składnia — a tej uczy darmowo rejestrator makr. Bariera jest psychologiczna, nie merytoryczna.

  1. Firma odkryła, że kluczowy raport od 3 lat liczy makro napisane przez byłego pracownika — nikt nie wie, co robi w środku. Wymień zagrożenia tej sytuacji i zaproponuj plan naprawczy (min. 3 kroki).
Wskazówka i odpowiedź

Zagrożenia: nikt nie wykryje błędu w logice (raport może cicho kłamać — 11.1!); zmiana formatu danych wejściowych wysypie makro w najgorszym momencie; brak wiedzy = brak możliwości poprawek; ryzyko bezpieczeństwa (co jeszcze robi?). Plan: (1) przeczytać i udokumentować kod (co robi krok po kroku); (2) przetestować na danych o znanym wyniku (koszyki testów z 3.6!); (3) dodać właściciela i wersjonowanie; (4) rozważyć przepisanie w czytelnej formie. To autentyczny problem świata firm — „arkusz-legenda, którego wszyscy się boją" — i dokładnie dlatego dokumentowanie oraz testowanie automatyzacji jest częścią rzemiosła, nie biurokracją.

🔍 Sprawdź, czy umiesz

  • Nagrać makro, przypisać do przycisku i wskazać jego ograniczenia.
  • Przeczytać prosty skrypt arkuszowy i nazwać konstrukcje z działu 3.
  • Rozstrzygnąć dla zadania: funkcja wbudowana, makro czy skrypt.

Ucz się tej jednostki z asystentem