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 SzukajMaxrozpoczyna definicję funkcji o nazwieSzukajMax.zakres As Rangeoznacza, że funkcja przyjmuje jeden argument (wejście) o nazwiezakres, który jest typuRange.Rangeodnosi się do zakresu komórek w arkuszu Excela.As Stringna 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ęMaxdo 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 zakresrozpoczyna 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 Thensprawdza, czy wartość w aktualnie przeglądanej komórce (kom.Value) jest równa maksymalnej znalezionej wartości (maks).SzukajMax = kom.Addressprzypisuje adres komórki z maksymalną wartością do samej funkcjiSzukajMax, co oznacza, że funkcja zwróci ten adres jako swój wynik.Exit Fornatychmiast kończy pętlę po znalezieniu komórki z maksymalną wartością, ponieważ już znaleziono potrzebne informacje.
5. Koniec pętli¶
Next komkoń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 Functionoznacza koniec definicji funkcji.