Wykonywanie iteracji za pomocą MAP i REDUCE
Stosowanie funkcji LAMBDA do tablicy w celu przekształcania lub kumulowania wartości
Wykonywanie iteracji za pomocą MAP i REDUCE to bezpłatna lekcja Excel Formulas Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Excel Formulas Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Excel Formulas Academy zawiera 4 lekcji w sumie.
Pętle bez kodu
Czasami trzeba zastosować to samo obliczenie do każdej wartości w zakresie albo sprowadzić cały zakres do jednej liczby. W programowaniu jest to pętla. W nowoczesnych arkuszach kalkulacyjnych funkcje MAP i REDUCE robią to za pomocą funkcji LAMBDA.
- MAP przekształca każdy element tablicy w nowy element
- REDUCE łączy wszystkie elementy w jeden skumulowany wynik
Obie funkcje przyjmują funkcję LAMBDA opisującą operację wykonywaną na każdej wartości. Są dostępne w Microsoft 365 i Google Sheets.
Jak działa MAP
Funkcja MAP przechodzi przez tablicę i stosuje funkcję LAMBDA do każdego elementu, tworząc nową tablicę o tym samym rozmiarze. Parametr funkcji LAMBDA za każdym razem otrzymuje jeden element.
Wzorzec jest następujący: należy przekazać funkcji MAP tablicę, a następnie funkcję LAMBDA, której parametr reprezentuje każdą wartość. MAP automatycznie rozlewa przekształcone wyniki do komórek.
=MAP(array, LAMBDA(value, calculation))Pierwszy przykład użycia MAP
Załóżmy, że zakres A2:A6 zawiera pięć cen, a każdą z nich chcą Państwo zwiększyć o 10 procent. MAP stosuje tę podwyżkę do wszystkich wartości jednocześnie.
Parametr funkcji LAMBDA, p, za każdym razem reprezentuje inną cenę. MAP zwraca pięć wyników — po jednym dla każdej komórki wejściowej — i rozlewa je w dół kolumny.
Nie trzeba przeciągać uchwytu wypełniania ani kopiować formuły. Jedna formuła obsługuje cały zakres.
=MAP(A2:A6, LAMBDA(p, p*1.1))MAP z dwiema tablicami
Funkcja MAP może przechodzić równolegle przez dwie tablice. Funkcja LAMBDA przyjmuje wtedy dwa parametry, po jednym z każdej tablicy, dopasowane element po elemencie według pozycji.
W tym przykładzie mnożymy ilości z zakresu A2:A6 przez ceny z zakresu B2:B6, aby uzyskać wartości pozycji. Parametr q odpowiada każdej ilości, a pr każdej cenie.
Obie tablice muszą mieć ten sam rozmiar, w przeciwnym razie pojawi się błąd.
=MAP(A2:A6, B2:B6, LAMBDA(q, pr, q*pr))Jak działa REDUCE
Funkcja REDUCE sprowadza tablicę do jednej wartości. Korzysta z akumulatora, który jest aktualizowany przy każdym elemencie.
Przyjmuje trzy elementy: wartość początkową akumulatora, tablicę oraz funkcję LAMBDA z dwoma parametrami: acc (bieżąca suma) i value (bieżący element). Funkcja LAMBDA zwraca nową wartość akumulatora na każdym etapie.
=REDUCE(start, array, LAMBDA(acc, value, new_accumulator))Pierwszy przykład użycia REDUCE
Zsumujmy zakres za pomocą REDUCE (tak, funkcja SUM również to potrafi, ale ten przykład dobrze pokazuje mechanizm).
Ustawiamy początkową wartość akumulatora na 0. Dla każdej wartości z zakresu A2:A6 funkcja LAMBDA dodaje ją do acc. Po przetworzeniu ostatniego elementu acc zawiera sumę.
Jeśli wartości wynosiłyby 10, 20 i 30, akumulator przyjmowałby kolejno wartości 0, 10, 30 i 60, kończąc na 60.
=REDUCE(0, A2:A6, LAMBDA(acc, v, acc + v))REDUCE do obliczania iloczynu
Po zmianie operacji REDUCE wykonuje inne zadanie. Aby pomnożyć wszystkie wartości przez siebie, należy rozpocząć od wartości akumulatora równej 1 i mnożyć ją na każdym etapie.
W ten sposób obliczany jest iloczyn, przydatny na przykład przy współczynnikach wzrostu składanego. Wartość początkowa ma znaczenie: dla sum należy użyć 0, a dla iloczynów 1, ponieważ są to odpowiednie elementy neutralne.
=REDUCE(1, A2:A6, LAMBDA(acc, v, acc * v))Łączenie MAP i REDUCE
W jednej formule można przekształcać dane za pomocą MAP i podsumowywać je za pomocą REDUCE. Częstym zadaniem jest sumowanie kwadratów wartości z zakresu.
W tym przykładzie MAP podnosi każdą wartość do kwadratu, a następnie REDUCE dodaje je do siebie, zaczynając od 0. Wynik funkcji MAP staje się tablicą przetwarzaną przez REDUCE.
=REDUCE(0, MAP(A2:A6, LAMBDA(x, x^2)), LAMBDA(acc, v, acc + v))MAP i REDUCE w Google Sheets
Obie funkcje są dostępne w Google Sheets z identyczną składnią. MAP stosuje funkcję LAMBDA do każdego elementu, a REDUCE gromadzi wynik, korzystając z wartości początkowej, tablicy i funkcji LAMBDA z dwoma parametrami.
Google Sheets oferuje również powiązane funkcje pomocnicze, takie jak SCAN, która działa podobnie do REDUCE, ale zwraca każdy pośredni stan akumulatora zamiast tylko końcowego. Excel również obsługuje funkcję SCAN.
=SCAN(0, A2:A6, LAMBDA(acc, v, acc + v))Wskazówki i pułapki
Warto pamiętać o kilku rzeczach:
- w funkcji MAP funkcja LAMBDA musi zwracać jedną wartość dla każdego elementu
- w funkcji REDUCE funkcja LAMBDA musi zawsze zwracać nową wartość akumulatora — nie wolno o tym zapomnieć
- należy wybrać właściwą wartość początkową: 0 dla sum, 1 dla iloczynów, pusty ciąg znaków dla łączenia tekstu
- przekazywane razem tablice muszą mieć te same wymiary
W razie wątpliwości warto najpierw przetestować funkcję LAMBDA inline na pojedynczej wartości.
Kiedy używać poszczególnych funkcji
Po funkcję MAP należy sięgać, gdy potrzebny jest wynik dla każdej wartości wejściowej, na przykład podczas stosowania narzutu lub formatowania do każdej wartości.
Po funkcję REDUCE należy sięgać, gdy wiele wartości ma zostać połączonych w jedną, na przykład w niestandardową sumę, konkatenację lub maksimum znalezione za pomocą własnej logiki.
Razem pozwalają wyrażać pętle, których starsze arkusze kalkulacyjne nie potrafiły wykonać w jednej formule.
Szybki test
Sprawdź swoją wiedzę na temat funkcji REDUCE.
Podsumowanie: pętle z MAP i REDUCE
Nauczył się Pan/Nauczyła się Pani przetwarzać tablice za pomocą funkcji korzystających z LAMBDA.
- MAP przekształca każdy element w nowy element i zwraca tablicę
- REDUCE sprowadza tablicę do jednej wartości za pomocą akumulatora
- należy wybrać sensowną wartość początkową: 0 dla sum i 1 dla iloczynów
- MAP może łączyć wiele tablic; połączenie MAP i REDUCE pozwala tworzyć rozbudowane podsumowania w jednej linii
- SCAN pokazuje każdy etap pośredni
W następnej części nauczy się Pan/Pani zapisywać funkcje LAMBDA jako funkcje nazwane, aby tworzyć przejrzyste formuły wielokrotnego użytku w całym skoroszycie.
=REDUCE(0, MAP(A2:A6, LAMBDA(x, x^2)), LAMBDA(acc, v, acc + v))Często zadawane pytania
Czy lekcja „Wykonywanie iteracji za pomocą MAP i REDUCE” jest bezpłatna?
Tak — pełny tekst „Wykonywanie iteracji za pomocą MAP i REDUCE” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Excel Formulas Academy, przejdź na CoddyKit PRO. Kurs Excel Formulas Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wykonywanie iteracji za pomocą MAP i REDUCE”?
Stosowanie funkcji LAMBDA do tablicy w celu przekształcania lub kumulowania wartości Ćwiczysz Excel Formulas Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Excel Formulas Academy?
Nie wymagamy żadnego doświadczenia. Excel Formulas Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wykonywanie iteracji za pomocą MAP i REDUCE”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Excel Formulas Academy?
Tak. Każda lekcja Excel Formulas Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Nazywanie etapów za pomocą LET
- Definiowanie funkcji niestandardowych za pomocą LAMBDA
- Wykonywanie iteracji za pomocą MAP i REDUCE
- Czytelniejsze formuły dzięki nazwanym funkcjom LAMBDA