Rozwiązanie 1¶
Treść zadania¶
Napisz funkcję SzukajMax
, która dla podanego zakresu komórek, znajdzie i zwróci jako wynik adres komórki zawierającej wartość maksymalną. Jeżeli kilka komórek zawiera tę wartość, funkcja powinna zwrócić adres pierwszej z nich.
Rozwiązanie¶
Function SzukajMax(zakres As Range) As String
maks = Application.WorksheetFunction.Max(zakres)
For Each kom In zakres
If kom.Value = maks Then
SzukajMax = kom.Address
Exit For
End If
Next kom
End Function
Opis rozwiązania¶
1. Definicja funkcji¶
Function SzukajMax
rozpoczyna definicję funkcji o nazwieSzukajMax
.zakres As Range
oznacza, że funkcja przyjmuje jeden argument (wejście) o nazwiezakres
, który jest typuRange
.Range
odnosi się do zakresu komórek w arkuszu Excela.As String
na końcu mówi, że funkcja zwraca wartość typuString
(ciąg znaków), który będzie adresem komórki.
2. Znalezienie maksymalnej wartości¶
maks = Application.WorksheetFunction.Max(zakres)
wykorzystuje wbudowaną funkcjęMax
do znalezienia największej wartości w podanym zakresiezakres
. Wynik jest przypisywany do zmiennejmaks
.
3. Przeszukiwanie zakresu w poszukiwaniu maksymalnej wartości¶
For Each kom In zakres
rozpoczyna pętlę, która przejdzie przez każdą komórkę (kom
) w określonym zakresie (zakres
).
4. Porównanie wartości i znalezienie adresu¶
If kom.Value = maks Then
sprawdza, czy wartość w aktualnie przeglądanej komórce (kom.Value
) jest równa maksymalnej znalezionej wartości (maks
).SzukajMax = kom.Address
przypisuje adres komórki z maksymalną wartością do samej funkcjiSzukajMax
, co oznacza, że funkcja zwróci ten adres jako swój wynik.Exit For
natychmiast kończy pętlę po znalezieniu komórki z maksymalną wartością, ponieważ już znaleziono potrzebne informacje.
5. Koniec pętli¶
Next kom
kończy bieżący cykl pętli i przechodzi do następnej komórki w zakresie, jeśli nie znaleziono jeszcze komórki z maksymalną wartością.
6. Koniec funkcji¶
End Function
oznacza koniec definicji funkcji.