W poprzedniej lekcji zapoznaliśmy się z funkcjami w VBA - poznaliśmy schemat
działania funkcji, nauczyliśmy się tworzyć własne funkcje, podawać do nich argumenty wejściowe oraz
przypisywać ich wynik do zmiennych.
Wiele popularnych operacji w VBA nie wymaga jednak tworzenia własnych funkcji, ponieważ w języku tym wbudowanych
jest wiele gotowych funkcji, które z powodzeniem mogą być wykorzystane w kodzie. Tematem tej lekcji będą właśnie
funkcje wbudowane.
Poniżej znajdziesz szczegółowe omówienie wszystkich istotnych na ten moment funkcji. Niektóre funkcje, które będą mogły
Ci się przydać w przyszłości, zostały na razie pominięte, ponieważ korzystają z elementów, które nie zostały jeszcze
omówione (np. tablic) i mogłyby tylko wprowadzić niepotrzebny zamęt (funkcje te będą sukcesywnie omawiane w dalszej
części kursu).
Po zapoznaniu się z opisem każdej z funkcji polecam przetestować jej działanie wpisując kilka przykładów w oknie
Immediate.
Spora część funkcji wbudowanych ma swoje odpowiedniki wśród tradycyjnych funkcji excelowych, wykorzystywanych w arkuszu.
Czasem mogą się jednak one nieco różnić składnią lub sposobem działania, na co zwróciłem szczególną uwagę podczas ich
opisywania.
Funkcje tekstowe
Łączenie tekstów
Aby połączyć ze sobą dwie lub więcej zmiennych tekstowych, należy połączyć je znakiem &.
Jeżeli połączysz ze sobą tym znakiem zmienne innego typu, zostaną one automatycznie przekonwertowane do typu tekstowego.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
"a" & "b" | ab | |
1 & 2 | 12 | |
1 & "a" & True | 1aTrue | |
Kod ASCII znaku
Function Asc(znak As String) As Integer
Funkcja Asc
zwraca kod ASCII znaku podanego jako argument znak
.
Jeżeli argument tekstowy znak
jest dłuższy niż jeden znak, funkcja Asc
zwraca kod ASCII pierwszego znaku tej zmiennej. Tak więc przykładowo wynik funkcji Asc("a")
będzie identyczny jak wynik działania funkcji Asc("abc")
.
Funkcja wygeneruje błąd, jeżeli jako argument zostanie podany pusty ciąg znaków "" lub nieistniejąca zmienna.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Asc("a") | 97 | |
Asc("A") | 65 | |
Asc("Abc") | 65 | |
Asc("") | błąd! | ciąg znaków podany jako argument musi mieć przynajmniej jeden znak |
Odpowiednikiem funkcji Asc
wśród funkcji arkuszowych jest funkcja =KOD(Tekst)
.
Znak o podanym kodzie ASCII
Function Chr(KodZnaku As Long) As String
Funkcja Chr
zwraca znak, który odpowiada kodowi ASCII podanemu jako argument.
Mimo iż w dokumentacji VBA jako argument tej funkcji podano zmienną typu Long
,
co sugerowałoby, że może ona przyjmować bardzo szeroki zakres wartości, w rzeczywistości podanie
jako argument liczby spoza zakresu 0-255 spowoduje wygenerowanie błędu. Wynika to z faktu, że tablica
ASCII zawiera tylko znaki ponumerowane od 0 do 255.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Chr(34) | " | |
Chr(97) | a | |
Chr(256) | błąd! | jako argument musi być podana liczba z zakresu 0-255 |
Odpowiednikiem funkcji Chr
wśród funkcji arkuszowych jest funkcja =ZNAK(Liczba)
.
Function Format(Expression, Optional Format As String) As String
Funkcja ta zwraca podany argument Expression
sformatowany do postaci określonej przez
argument Format
.
Argument Format
jest wprawdzie opcjonalny, ale zastosowanie funkcji Format
z jego pominięciem jest zupełnie pozbawione sensu, ponieważ zwraca dokładnie tę samą wartość, która
została podana jako argument Expression
.
Jeżeli jako argument Expression
zostanie podany tekst to funkcja Format
, niezależnie
od wartości drugiego argumentu - Format
, zwróci tak naprawdę ten sam tekst w niezmienionej postaci.
Dopiero w sytuacji, gdy jako argument Expression
podana jest liczba lub data, działanie funkcji
Format
może przynieść jakieś korzyści.
Poniżej znajduje się wykaz wartości, jakie może przyjąć argument Format
, wraz z krótkim opisem postaci,
jaką przybiera wówczas wynik funkcji.
FORMAT | OPIS |
General Date | data sformatowana wg ustawień systemowych Twojego komputera |
Long Date | data w pełnej postaci, np. 16 październik 2010 |
Medium Date | data w postaci dd-skrócona nazwa miesiąca-yy (np. 16-paź-10) |
Short Date | data w postaci yyyy-mm-dd (np. 2010-10-16) |
Long Time | czas w postaci hh:mm:ss (np. 21:04:25) |
Medium Time | czas w postaci hh:mm w systemie 12-godzinnym (np. 09:04) |
Short Time | czas w postaci hh:mm w systemie 24-godzinnym (np. 21:04) |
mm/dd/yyyy | data w postaci mm-dd-yyyy (np. 10-16-2010) |
dd/mm/yy | data w postaci dd-mm-yy (np. 16-10-10) |
#### | liczba bez separatorów tysięcy i bez części dziesiętnych (np. 1500) |
#,### | liczba z separatorami tysięcy, bez części dziesiętnych (np. 1 500) |
####.0 | liczba bez separatorów tysięcy, wyświetlająca tyle miejsc dziesiętnych ile zer znajduje się po kropce (np. 1500,0) |
#,###.00 | liczba z separatorami tysięcy, wyświetlająca tyle miejsc dziesiętnych ile zer znajduje się po kropce (np. 1 500,00) |
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Format("a", "General Date") | a | wartości tekstowe nie są zmieniane przez funkcję Format |
Format(40000, "General Date") | 2009-07-06 | na Twoim komputerze ta wartość może być inna (zależy od ustawień systemowych) |
Format(0.25, "Long Time") | 06:00:00 | |
Format(12534.23, "#,###.0") | 12 534,2 | |
Format(12534.23, "####.00") | 12534,23 | |
Funkcja Format
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Sprawdzanie czy jeden tekst zawiera się w drugim
Function InStr(Start As Long,
PrzeszukiwanyTekst As String,
SzukanyTekst As String) As Long
Funkcja InStr
sprawdza czy tekst podany jako argument SzukanyTekst
jest zawarty w tekście
podanym jako argument PrzeszukiwanyTekst
. Sprawdzanie rozpoczyna się od znaku określonego na podstawie
argumentu liczbowego LiczbaPoczatkowa
.
Jeżeli tekst SzukanyTekst
nie zostanie odnaleziony w tekście PrzeszukiwanyTekst
funkcja zwraca
wartość 0. Jeśli natomiast funkcja odnajdzie szukany tekst w przeszukiwanym tekście zwraca pozycję, na której został on
odnaleziony.
Funkcja wygeneruje błąd w przypadku podania jako argument Start
wartości nie będącej liczbą dodatnią.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
InStr("a", "tekst", "eks") | błąd! | argument Start nie jest liczbą |
InStr(0, "tekst", "eks") | błąd! | argument Start nie jest liczbą dodatnią |
InStr(1, "eks", "tekst") | 0 | tekst tekst nie znajduje się w tekście eks |
InStr(1, "tekst", "eks") | 2 | fragment tekstu eks znajduje się w tekście tekst i rozpoczyna się od drugiego znaku |
InStr(3, "tekst", "eks") | 0 | wprawdzie fragment tekstu eks znajduje się w tekście tekst, ale argument Start określa, że poszukiwanie ma się rozpocząć od 3 znaku |
InStr(2, "xyzxyz", "xyz") | 4 | przy przeszukiwaniu tekstu xyzxyz począwszy od drugiego znaku, fragment tekstu xyz zostanie odnaleziony od czwartego znaku |
Odpowiednikiem funkcji InStr
w arkuszu jest funkcja =ZNAJDŹ(Szukany_tekst, W_tekście, [Liczba_początkowa])
.
Zwróć jednak uwagę na różnicę składni pomiędzy funkcją arkuszową ZNAJDŹ
, a funkcją InStr
w VBA - obie funkcje mają zupełnie inną kolejność argumentów. Ponadto, w funkcji arkuszowej argument Liczba_początkowa
jest opcjonalny i przy jego pominięciu domyślnie otrzymuje wartość 1, w funkcji VBA argument Liczba_Poczatkowa
musi
być podany obowiązkowo.
Zamiana na małe lub wielkie litery
Function LCase(tekst As String) As String
Function UCase(tekst As String) As String
Funkcja LCase
zwraca wartość argumentu tekst
zapisaną małymi literami, natomiast funkcja
UCase
wartość tego argumentu zapisaną wielkimi literami.
W przypadku podania jako argument liczby, funkcja zwraca taką samą wartość jak podany argument, z tym że wynik nie jest
już liczbą, lecz tekstem reprezentującym wartość liczbową (o różnicach pomiędzy liczbą a tekstem reprezentującym tę samą
liczbę była mowa w lekcji czwartej).
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
LCase(0) | 0 | |
LCase("abc") | abc | |
LCase("ABc") | abc | |
UCase("ABC") | ABC | |
UCase("abc") | ABC | |
Odpowiednikiem funkcji LCase
w arkuszu jest funkcja =LITERY.MAŁE(tekst)
.
Odpowiednikiem funkcji UCase
w arkuszu jest funkcja =LITERY.WIELKIE(tekst)
.
Początkowy lub końcowy fragment tekstu
Function Left(tekst As String, dlugosc As Long) As String
Function Right(tekst As String, dlugosc As Long) As String
Powyższe funkcje - Left
oraz Right
- zwracają fragment tekstu znajdujący się odpowiednio
z lewej i prawej strony wartości tekst
podanej jako argument.
Długość zwracanego ciągu znaków jest uzależniona od liczby podanej jako argument dlugosc
.
Argument dlugosc
musi być liczbą dodatnią lub zerem. W przypadku podania liczby ujemnej
funkcja wygeneruje błąd.
Jeżeli argument dlugosc
jest większy niż długość tekstu tekst
podanego jako
argument, wówczas funkcja zwraca całą wartość argumentu tekst
.
Przykładowo zapis funkcji Left("abc", 5)
oznaczałby, że chcesz uzyskać 5 pierwszych znaków od lewej
z tekstu abc. Tekst ten ma jednak tylko trzy znaki, ale funkcja w takiej sytuacji nie wygeneruje błędu tylko
zwróci całą wartość argumentu tekst
, czyli w tym przypadku abc.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Left("abc", -1) | błąd! | argument dlugosc musi być liczbą dodatnią lub zerem |
Left("abc", 0) | | pusty ciąg znaków |
Left("abc", 2) | ab | |
Left("abc", 10) | abc | argument dlugosc jest większy niż długość argumentu tekst ; zwracany jest więc cały argument tekst |
Right("abc", 2) | bc | |
Right("tekst", 3) | kst | |
Odpowiednikiem funkcji Left
w arkuszu jest funkcja =LEWY(tekst, liczba_znakow)
.
Odpowiednikiem funkcji Right
w arkuszu jest funkcja =PRAWY(tekst, liczba_znakow)
.
Środkowy fragment tekstu
Function Mid(tekst As String, start As Long, Optional len As Long) As String
Funkcja Mid
pozwala zwrócić fragment jakiegoś tekstu. W przeciwieństwie do funkcji Left
i
Right
, dzięki którym można zwrócić tylko fragment z początku lub końca tekstu, funkcja Mid
pozwala także na uzyskanie fragmentu ze środka podanego tekstu.
Funkcja wymaga podania dwóch obowiązkowych argumentów:
tekst
- argument tekstowy; jest to tekst, z którego będzie wydobywany fragment,
start
- argument liczbowy; musi być liczbą dodatnią, w przypadku podania liczby ujemnej lub zera funkcja wygeneruje błąd; argument start
określa, w którym miejscu argumentu tekst
ma się rozpoczynać zwracany fragment (jeżeli np. start
wynosi 3 oznacza to, że zwracany fragment będzie się rozpoczynał od trzeciego znaku argumentu tekst
).
Jeżeli wartość argumentu start
jest większa niż długość argumentu tekst
, funkcja zwróci pusty ciąg znaków.
Dodatkowo funkcja Mid
posiada argument opcjonalny len
. Pozwala on określić ile znaków ma
liczyć zwracany fragment tekstu.
Wartość podana jako argument len
musi być liczbą nieujemną.
Jeżeli len
wynosi 0, zwracana wartość jest pustym ciągiem znaków.
Jeżeli argument len
jest pominięty, funkcja zwraca fragment od znaku określonego przez argument
start
aż do końca całego tekstu bazowego.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Mid("Polska", -1) | błąd! | argument start musi być liczbą dodatnią |
Mid("Polska", 1, -1) | błąd! | argument len musi być liczbą nieujemną |
Mid("Polska", 3, 2) | ls | fragment tekstu Polska rozpoczynający się od trzeciego znaku i liczący dwa znaki |
Mid("Polska", 3) | lska | fragment tekstu Polska rozpoczynający się od trzeciego znaku; nie określono argumentu len , więc zwracany jest fragment aż do końca tekstu podanego jako argument |
Mid("Polska", 3, 10) | lska | fragment tekstu Polska rozpoczynający się od trzeciego znaku; argument len wynosi 10, ale od trzeciego znaku do końca wyrazu są tylko 4 znaki, więc tylko one są zwracane |
Mid("Polska", 8, 2) | | pusty ciąg znaków; zwracany fragment miał się rozpocząć od ósmego znaku tekstu Polska, tekst ten liczy jednak tylko 6 znaków, dlatego wynikiem jest pusty ciąg znaków |
Odpowiednikiem funkcji Mid
w arkuszu jest funkcja =FRAGMENT.TEKSTU(tekst, liczba_początkowa, liczba_znaków)
.
Usuwanie zbędnych spacji
Function LTrim(tekst As String) As String
Function RTrim(tekst As String) As String
Function Trim(tekst As String) As String
Powyższe trzy funkcje zwracają wartość tekstową, która jest identyczna jak wartość wejściowego argumentu
tekst
, z tym wyjątkiem, że pozbawiona jest początkowych lub końcowych spacji.
Funkcja LTrim
usuwa spacje tylko z lewej strony argumentu tekst
,
funkcja RTrim
tylko z jego prawej strony, natomiast funkcja Trim
z obu stron.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Trim("abc") | abc | |
Trim(" abc") | abc | |
Trim(" abc ") | abc | |
Trim(" asda asd ") | asda asd | |
Funkcje LTrim
i RTrim
nie mają odpowiedników wśród funkcji arkuszowych.
Odpowiednikiem funkcji Trim
w arkuszu jest funkcja =USUŃ.ZBĘDNE.ODSTĘPY(tekst)
.
Istnieje jednak pewna różnica w działaniu obu tych funkcji. Arkuszowa funkcja USUŃ.ZBĘDNE.ODSTĘPY
usuwa
również zbędne spacje wewnątrz podanego tekstu. Jeżeli jako argument tej funkcji podasz przykładowo tekst " zbędne odstępy ",
w którym zbędne spacje występują także w środku tekstu (oba wyrazy są rozdzielone kilkoma spacjami zamiast jedną),
funkcja usunie je również i zwróci wynik zbędne odstępy.
Jeżeli postąpiłbyś tak samo z funkcją
Trim
w języku VBA, usunęłaby ona tylko zbędne spacje z początku i końca tekstu, a nie ruszyłaby tych
wewnątrz tekstu, więc zwrócony wynik miałby wartość zbędne odstępy.
Długość tekstu
Function Len(tekst As String) As Long
Funkcja Len
zwraca długość podanego argumentu tekstowego tekst
.
Funkcja Len
generuje błąd, jeżeli podany argument nie jest tekstem.
W każdej innej funkcji, jeżeli zamiast wymaganego argumentu tekstowego podasz liczbę, zostanie ona automatycznie
zamieniona na tekst. Jednak w przypadku tej funkcji ta zasada nie obowiązuje, więc jeżeli podasz w argumencie
jakąś liczbę, kompilator nie potraktuje jej jako tekstu lecz wyświetli komunikat o błędzie!
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Len(1) | błąd! | podany argument nie jest tekstem lecz liczbą |
Len("") | 0 | |
Len("tekst") | 5 | |
Odpowiednikiem funkcji Len
w arkuszu jest funkcja =DŁ(tekst)
.
Zamiana fragmentu tekstu na inny
Function Replace(Expression As String, Find As String, Replace As String, _
Optional Start As Long, Optional Count As Long) As String
Funkcja Replace
pozwala zamienić fragment występujący w jakimś tekście na inny.
Funkcja wymaga podania trzech obowiązkowych argumentów:
Expression
: argument tekstowy, reprezentuje tekst wyjściowy, w którym ma być dokonana zamiana;
Find
: argument tekstowy, reprezentuje fragment tekstu, który ma być zamieniony;
Replace
: argument tekstowy, reprezentuje fragment tekstu, który ma się pojawić zamiast fragmentu określonego w argumencie Find
.
Jeżeli funkcja ma przykładowo postać Replace("tekst tekst tekst", "ks", "xx")
, kompilator odszuka
w tekście tekst tekst tekst wszystkie wystąpienia ks i w każdym miejscu, w którym je odnajdzie,
usunie je, wstawiając w to miejsce tekst xx. Wynikiem takiej funkcji byłby więc tekst texxt texxt texxt.
Funkcja Replace
umożliwia także podanie dwóch argumentów opcjonalnych:
Start
: argument liczbowy; argument Start
musi być liczbą dodatnią; działa identycznie jak funkcja Mid
; określa od którego znaku podstawowego tekstu Expression
ma być podany wynik funkcji;
jeżeli przykładowo podasz jako argument Start
liczbę 5, to funkcja Replace
zamieni wszystkie znaki, jakie ma do zamienienia, ale przy zwracaniu wyniku dodatkowo utnie cztery pierwsze znaki i poda wynik dopiero od piątego znaku.
Count
: argument liczbowy; argument Count
musi być liczbą dodatnią; określa ile razy ma być dokonana zamiana tekstu Find
na tekst Replace
;
jeżeli zmodyfikujesz omówiony przed momentem przykład do postaci Replace("tekst tekst tekst", "ks", "xx", 1, 2)
, a więc określisz dodatkowo, że argument Count
wynosi 2 (czyli tylko dwa razy ma nastąpić zamiana) to wynikiem takiej funkcji będzie texxt texxt tekst. Wprawdzie w wyjściowym argumencie Expression
fragment tekstu ks występuje 3 razy, ale argumentem Count
określasz, że tylko dwa pierwsze z tych wystąpień powinny zostać zamienione na xx, a pozostałe mają pozostać nienaruszone.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Replace("tekst tekst tekst", "ks", "x") | text text text | wszystkie wystąpienie tekstu ks w tekście bazowym zostały zamienione na x |
Replace("tekst tekst tekst", "t", "") | eks eks eks | wszystkie wystąpienia litery t w tekście bazowym zostały zamienione na pusty ciąg znaków |
Replace("tekst tekst tekst", "t", "", 1, 2) | eks tekst tekst | wystąpienia znaku t mają zostać zamienione na pusty ciąg znaków; w tym przypadku jest jednak pewne zastrzeżenie - argument Count wynosi 2, co oznacza, że zamienione zostaną tylko 2 pierwsze wystąpienia |
Odpowiednikiem funkcji Replace
w arkuszu jest funkcja =PODSTAW(Tekst, Stary_tekst, Nowy_tekst, Wystapienie_liczba)
.
Drobną różnicą pomiędzy arkuszową funkcją PODSTAW
a funkcją Replace
w VBA jest ostatni argument (Wystapienie_liczba
w funkcji arkuszowej i Count
w funkcji VBA). W funkcji VBA, jak przed chwilą wspomniano, argument ten określa ile początkowych wystąpień szukanego tekstu ma zostać zamienionych na nowy tekst, natomiast w funkcji arkuszowej PODSTAW
argument ten określa, które wystąpienie ma zostać zamienione (wartość 2 oznaczałaby więc, że tylko drugie wystąpienie szukanego tekstu zostanie zamienione na nowy tekst).
Tekst od tyłu
Function StrReverse(tekst As String) As String
Funkcja StrReverse
zwraca podany w argumencie tekst przedstawiony wspak.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
StrReverse(10) | 01 | |
StrReverse("abc") | cba | |
StrReverse("Polska") | aksloP | |
StrReverse("tekst") | tsket | |
Funkcja StrReverse
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Powtarzanie tekstu n razy
Function String(Liczba As Long, Znak As String) As String
Funkcja String
zwraca znak określony w argumencie Znak
tyle razy, ile wynosi
argument Liczba
.
Argument Znak
powinien być pojedynczym znakiem. Jeżeli zamiast tego będzie on składał się z większej
liczby znaków, funkcja i tak uwzględni tylko pierwszy z nich.
Funkcja wygeneruje błąd, jeżeli argument Liczba
nie będzie liczbą nieujemną lub jeżeli argument
Znak
będzie pustym ciągiem znaków.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
String(5, "") | błąd! | argument Znak nie może być pustym ciągiem znaków |
String(4, "a") | aaaa | |
String(0, "a") | | |
String(5, "abc") | aaaaa | |
Funkcja String
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Zbliżone działanie prezentuje funkcja =POWT(tekst, ile_razy)
, jest jednak ona o wiele
przydatniejsza, ponieważ pozwala powtarzać tekst o dowolnej długości, a nie tylko pojedynczy znak.
Nazwa miesiąca lub tygodnia
Function MonthName(Miesiac As Long, Optional czySkrot As Boolean) As String
Function WeekdayName(DzienTygodnia As Long, Optional czySkrot As Boolean, _
FirstDayOfWeek As vbDayOfWeek) As String
Powyższe dwie funkcje zwracają odpowiednio nazwę miesiąca lub dnia tygodnia na podstawie argumentów Miesiac
lub DzienTygodnia
.
Argument Miesiac
może przyjmować tylko wartości od 1 do 12, natomiast argument DzienTygodnia
od 1 do 7 - każda inna wartość tych argumentów spowoduje wygenerowanie błędu.
Argument czySkrot
typu logicznego określa czy zwrócona ma być pełna nazwa miesiąca lub tygodnia (czySkrot = False
) czy też trzyliterowa nazwa skrócona (czySkrot = True
).
Funkcja WeekdayName
pozwala dodatkowo określić, który dzień tygodnia jest uważany za pierwszy. Jako argument FirstDayOfWeek
należy wpisać którąś z następujących wartości (wartości te muszą być wpisane bez cudzysłowów, są to tzw. wyliczenia, które zostaną omówione w dalszej części kursu):
WARTOŚĆ | PIERWSZY DZIEŃ TYGODNIA |
vbUseSystemDayOfWeek | używa ustawień systemowych |
vbMonday | poniedziałek |
vbTuesday | wtorek |
vbWednesday | środa |
vbThursday | czwartek |
vbFriday | piątek |
vbSaturday | sobota |
vbSunday | niedziela |
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
MonthName(0, true) | błąd! | |
WeekdayName(9, false) | błąd! | |
MonthName(3, false) | marzec | |
MonthName(4, true) | kwi | |
WeekdayName(1, true, vbMonday) | pon | |
WeekdayName(2, false, vbSunday) | poniedziałek | |
Funkcje MonthName
i WeekdayName
nie mają swoich odpowiedników wśród funkcji arkuszowych.
Funkcje liczbowe
Podstawowe operacje matematyczne
Operatory obsługujące podstawowe operacje matematyczne wyglądają w VBA podobnie, jak w tradycyjnym arkuszu Excela:
OPERACJA | OPIS |
a^b | podniesienie liczby a do potęgi b |
-a | zmiana znaku liczby a |
a*b | mnożenie liczby a przez liczbę b |
a/b | dzielenie liczby a przez liczbę b |
a\b | dzielenie całkowite liczby a przez liczbę b (zwraca tylko część całkowitą wyniku dzielenia) |
a Mod b | zwracanie reszty z dzielenia liczby a przez liczbę b |
a+b | dodawanie liczb a i b |
a-b | odejmowanie liczb a i b |
Kolejność wykonywania działań jest identyczna jak przedstawiono w powyższej tabeli, z tym tylko zastrzeżeniem,
że mnożenie i dzielenie są operacjami równorzędnymi, podobnie jak dodawanie i odejmowanie, a o kolejności ich
wykonania decyduje kolejność zapisu.
Aby zmienić kolejność działań można ująć działanie, które ma otrzymać wyższy priorytet, w nawiasie.
Wartość bezwzględna liczby
Funkcja Abs
zwraca wartość bezwzględną liczby, a więc dla liczb dodatnich i zera zwraca wartość
identyczną jak argument Number
, natomiast dla liczb ujemnych zwraca wartość argumentu
Number
pomnożoną razy -1. Typ wartości zwracanej przez funkcję Abs
jest identyczny
jak typ podany w argumencie Number
.
Jako argument Number
musi być podana wartość typu liczbowego. Podanie w argumencie innej wartości,
np. tekstowej, spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Abs("a") | błąd! | argument Number nie jest liczbą |
Abs(0) | 0 | |
Abs(1) | 1 | |
Abs(1.23) | 1.23 | |
Abs(-1.23) | 1.23 | |
Odpowiednikiem funkcji Abs
w arkuszu jest funkcja =MODUŁ.LICZBY(liczba)
.
Funkcje trygonometryczne
Function Atn(Number) As Double
Function Cos(Number) As Double
Function Sin(Number) As Double
Function Tan(Number) As Double
Powyższe funkcje zwracają odpowiednio arcus tangens, cosinus, sinus oraz tangens
z argumentu Number
.
Liczba podawana jako argument Number
jest określona w radianach.
Jako argument Number
musi być podana wartość typu liczbowego. Podanie w argumencie innej wartości,
np. tekstowej, spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Atn(0) | 0 | |
Atn(1) | 0.785... | |
Cos(0) | 1 | |
Cos(1) | 0.540... | |
Sin(0) | 0 | |
Sin(1) | 0.841... | |
Tan(0) | 0 | |
Tan(1) | 1.557... | |
Odpowiednikami powyższych funkcji trygonometrycznych w arkuszu są odpowiednio =ATAN(liczba)
,
=COS(liczba)
, =SIN(liczba)
oraz =TAN(liczba)
.
Liczba e i jej potęgi
Function Exp(potega) As Double
Funkcja Exp
zwraca w wyniku liczbę e podniesioną do potęgi określonej w argumencie potega
.
Jako argument potega
musi być podana wartość typu liczbowego. Podanie w argumencie innej wartości, np. tekstowej,
spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Exp(0) | 1 | |
Exp(1) | 2.718... | |
Exp(-1) | 0.368... | |
Odpowiednikiem funkcji Exp
w arkuszu jest działająca identycznie funkcja o takiej samej
nazwie =EXP(potega)
.
Logarytm naturalny
Function Log(liczba As Double) As Double
Funkcja Log
zwraca logarytm naturalny z liczby podanej jako argument liczba
.
Jako argument liczba
musi być podana dodatnia wartość liczbowa. Podanie w argumencie innej
wartości, np. zera, liczby ujemnej lub tekstu, spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Log(0) | błąd! | argument liczba nie jest liczbą dodatnią |
Log(1) | 0 | |
Log(10) | 2.303... | |
Odpowiednikiem funkcji Log
w arkuszu jest funkcja =LN(liczba)
.
Zwróć uwagę, że wśród funkcji arkuszowych istnieje również funkcja =LOG
, która ma jednak inne zastosowanie i
oblicza logarytm o dowolnej podstawie, a nie logarytm naturalny.
Znak liczby
Function Sgn(liczba As Double) As Integer
Funkcja Sgn
zwraca znak liczby podanej jako argument liczba
.
Jeżeli podany argument jest ujemny wynikiem działania funkcji jest -1.
Jeżeli argumentem jest liczba 0, funkcja zwraca w wyniku 0.
Jeżeli podany argument jest dodatni, funkcja zwraca 1.
Jako argument Number
musi być podana wartość typu liczbowego. Podanie w argumencie innej wartości,
np. tekstowej, spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Sgn("a") | błąd! | wymagane jest podanie argumentu liczbowego a nie tekstu |
Sgn(0) | 0 | |
Sgn(-1) | -1 | |
Sgn(-5) | -1 | |
Sgn(0.23423) | 1 | |
Sgn(1) | 1 | |
Sgn(1500) | 1 | |
Odpowiednikiem funkcji Sgn
w arkuszu jest funkcja =ZNAK.LICZBY(liczba)
.
Pierwiastek kwadratowy
Function Sqr(liczba As Double) As Double
Funkcja Sqr
zwraca pierwiastek kwadratowy z liczby podanej jako argument liczba
.
Jako argument liczba
musi być podana nieujemna wartość liczbowa. Podanie w argumencie innej
wartości, np. liczby ujemnej lub tekstu, spowoduje wygenerowanie błędu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Sqr(-1) | błąd! | argument liczba nie jest liczbą nieujemną |
Sqr(0) | 0 | |
Sqr(4) | 2 | |
Sqr(9) | 3 | |
Odpowiednikiem funkcji Sqr
w arkuszu jest funkcja =PIERWIASTEK(liczba)
.
Zaokrąglanie liczb
Function Round(Liczba As Double, Optional IleZnakow As Long) As Double
Funkcja Round
dokonuje zaokrąglenia liczby podanej jako argument Liczba
.
Jako argument Liczba
musi być podana wartość typu liczbowego. Podanie w argumencie innej
wartości, np. tekstowej, spowoduje wygenerowanie błędu.
Opcjonalny argument IleZnakow
określa do ilu liczb po przecinku ma zostać zaokrąglona liczba.
Argument IleZnakow
musi być liczbą nieujemną. Jeżeli argument IleZnakow
nie
zostanie podany przy wywoływaniu funkcji, liczba jest domyślnie zaokrąglana do części całkowitych.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Round("a") | błąd! | argument Liczba nie jest liczbą |
Round(2,-1) | błąd! | argument IleZnakow nie jest liczbą nieujemną |
Round(2.5) | 3 | nie podano argumentu IleZnakow , więc liczba jest zaokrąglana do liczb całkowitych |
Round(2.51, 1) | 2.5 | |
Round(2.1484, 2) | 2.15 | |
Odpowiednikiem funkcji Round
w arkuszu jest funkcja =ZAOKR(liczba;liczba_cyfr)
.
Różnice pomiędzy tymi funkcjami polegają na tym, że w funkcji arkuszowej argument liczba_cyfr
jest obowiązkowy, a nie opcjonalny tak jak w funkcji VBA, a ponadto, w przeciwieństwie do funkcji VBA, może
on przyjmować wartości ujemne.
Część całkowita liczby
Function Int(Liczba As Double) As Long
Funkcja Int
obcina całą część ułamkową liczby i zwraca tylko część całkowitą liczby.
Nie należy mylić funkcji Int
z funkcją Round
, która zaokrągla liczby w górę lub
w dół w zależności od wartości części ułamkowej. Funkcja Int
zawsze zaokrągla w dół, bez względu
na to, ile wynosi część ułamkowa.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Int(1) | 1 | |
Int(1.3) | 1 | |
Int(1.9) | 1 | |
Funkcja Int
przypomina działaniem funkcję arkuszową =LICZBA.CAŁK(liczba;[liczba_cyfr])
.
Różnica polega na tym, że funkcja Int
zawsze obcina całą część ułamkową i pozostawia tylko część
całkowitą, natomiast funkcja arkuszowa LICZBA.CAŁK
pozwala również pozostawić określoną liczbę
znaków po przecinku.
Zamiana na inne systemy liczbowe
Function Oct(Liczba) As String
Function Hex(Liczba) As String
Funkcje Oct
i Hex
zamieniają argument Liczba
odpowiednio na
zapis w systemie ósemkowym i szesnastkowym.
Jako argument Liczba
musi być podana wartość typu liczbowego. Podanie w argumencie innej wartości,
np. tekstowej, spowoduje wygenerowanie błędu.
Wartości zwracane przez funkcje Oct
oraz Hex
są tekstami.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Hex(15) | F | |
Hex(214) | D6 | |
Oct(8) | 10 | |
Oct(214) | 326 | |
Funkcje Hex
i Oct
nie mają swoich odpowiedników wśród funkcji arkuszowych.
Generowanie liczb losowych
Funkcja Rnd
zwraca liczbę losową z zakresu od 0 do 1.
Losowość liczb wygenerowanych przez funkcję Rnd()
pozostawia tak naprawdę wiele do życzenia, więc
jeżeli potrzebujesz liczb w 100% losowych nie zalecane jest ślepe zawierzanie funkcji Rnd()
.
Odpowiednikiem funkcji Rnd
w arkuszu jest funkcja =LOS()
.
Funkcje daty i czasu
Tworzenie daty i czasu
Function DateSerial(Year As Integer, Month As Integer, Day As Integer) As Date
Function TimeSerial(Hour As Integer, Minute As Integer, Second As Integer) As Date
Funkcje DateSerial
i TimeSerial
pozwalają stworzyć wartość typu datowego poprzez podanie
poszczególnych wartości daty lub czasu.
Przykładowo zapis DateSerial(2010, 12, 31)
zwróci datę 31 grudnia 2010, natomiast wynikiem
funkcji TimeSerial(15, 8, 12)
będzie godzina 15:08:12.
Obie powyższe funkcje są elastyczne, ponieważ wartość podawanych składników nie musi się ograniczać do ich
maksymalnie przyjętych wartości.
Przykładowo tworząc datę za pomocą funkcji DateSerial
numer miesiąca nie musi zawierać się w przedziale
1-12 (chociaż tylko tyle jest miesięcy), ale równie dobrze może przyjmować wyższe wartości, a nawet wartości ujemne.
Podobnie liczba dni nie musi zawierać się w przedziale 1-31, liczba godzin może wykraczać poza przedział 1-24, a liczba
minut i sekund poza zakres 1-60.
W sytuacji, gdy któryś z elementów daty lub czasu przekracza jego dopuszczalny zakres, modyfikacji ulega poprzedzający
go składnik.
Przykładowo w zapisie DateSerial(2000, 14, 1)
liczba miesięcy została określona na 14. W związku z tym, że
miesięcy w roku jest tylko 12, liczba miesięcy odpowiada tak jakby jednemu pełnemu rokowi plus dwóm miesiącom. Dlatego
też do liczby lat określonej w tym przykładzie na 2000 zostaje dodany jeden rok, natomiast liczba miesięcy przyjmuje
wartość 2 (miesiące pozostałe po przypisaniu dodatkowych lat), a cały zapis jest równoznaczny z zapisem
DateSerial(2001, 2, 1)
.
Podobnie wygląda sytuacja z określaniem czasu. W przykładowym zapisie TimeSerial(13, 75, 21)
liczba minut
została określona na 75, co jest równoznaczne z jedną pełną godziną i 15 pozostałymi minutami, dlatego też wynikiem tej
funkcji będzie godzina 14:15:21.
Analogicznie, w przypadku podania jako argument liczby ujemnej, odpowiednia liczba zostaje odjęta od elementu daty
lub godziny poprzedzającego składnik z ujemną wartością.
Przykładowo w zapisie TimeSerial(14, -5, 0)
liczba minut została określona jako -5. Jak łatwo się domyślić,
jest to równoznaczne z odjęciem 5 minut od godziny 14:00:00, więc wynikiem tej funkcji będzie godzina
13:55:00.
Nieco inaczej wygląda sytuacja z liczbami ujemnymi w funkcji DateSerial
. Wynika to z faktu, że godziny,
minuty czy sekundy mogą naturalnie przyjmować wartość 0 i nie jest to nic niezwykłego, natomiast dla miesięcy i dni
minimalną wartością jest 1.
Dlatego też w przykładowym zapisie DateSerial(2000, 0, 1)
, mimo że liczba miesięcy nie jest liczbą ujemną
lecz zerem, kompilator przy wykonywaniu tej funkcji zinterpretuje to tak jakby miał odjąć jeden miesiąc od daty
2000-01-01 i zwróci w wyniku datę 1999-12-01. Zapis DateSerial(2000, -1, 1)
będzie natomiast oznaczał,
że od daty 2000-01-01 należy odjąć dwa miesiące, mimo że jako numer miesiąca podana jest liczba -1, ponieważ liczba -1
jest mniejsza od minimalnego dopuszczalnego numeru miesiąca (czyli 1) właśnie o 2.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
DateSerial(2000, 1, 3) | 03-01-2000 | |
DateSerial(2000, 16, 7) | 2001-04-07 | |
DateSerial(2000, 16, 43) | 2001-05-13 | |
DateSerial(2000, 0, 24) | 1999-12-24 | |
DateSerial(2000, -5, -5) | 1999-06-25 | |
TimeSerial(13, 12, 15) | 13:12:15 | |
TimeSerial(13, 75, 30) | 14:15:30 | |
TimeSerial(13, 75, 75) | 14:16:15 | |
TimeSerial(13, -10, 21) | 12:50:21 | |
TimeSerial(13, -5, -5) | 12:54:55 | |
Odpowiednikami funkcji DateSerial
i TimeSerial
w arkuszu są funkcje
=DATA(rok;miesiąc;dzień)
oraz =CZAS(godzina;minuta;sekunda)
.
Aktualna data i czas
Function Timer() As Single
Funkcja Date
zwraca wartość typu daty i czasu, reprezentującą aktualną datę systemową.
Funkcja Time
zwraca wartość typu daty i czasu, reprezentującą aktualny czas systemowy.
Funkcja Now
jest połączeniem funkcji Date
oraz Time
i zwraca
wartość reprezentującą aktualną datę i czas systemowy.
Funkcja Timer
zwraca liczbę, reprezentującą ilość sekund, jakie upłynęły od północy.
Powyższe funkcje mogą być też zapisywane w edytorze kodu z pominięciem nawiasu.
W momencie pisania tego zdania (czyli 17 października 2010 o godzinie 16:08) powyższe funkcje zwróciły następujące
wartości:
FUNKCJA | WYNIK | UWAGI |
Date() | 2010-10-17 | |
Time() | 16:08:28 | |
Now() | 2010-10-17 16:08:28 | |
Timer() | 58108,7 | tyle sekund upłynęło od północy do godziny 16:08:28 |
Odpowiednikiem funkcji Date()
w arkuszu jest funkcja =DZIŚ()
.
Odpowiednikiem funkcji Now()
w arkuszu jest funkcja =TERAZ()
.
Funkcje Time()
i Timer()
nie mają swoich odpowiedników wśród funkcji arkuszowych.
Składniki daty lub czasu
Function Year(Data As Date) As Integer
Function Month(Data As Date) As Integer
Function Day(Data As Date) As Integer
Function Hour(Data As Date) As Integer
Function Minute(Data As Date) As Integer
Function Second(Data As Date) As Integer
Wymienione wyżej funkcje pozwalają na uzyskanie informacji o poszczególnych składnikach jakiejś daty.
Jako argument Data
musi zostać podana zmienna typu datowego (lub liczba, gdyż jak zostało
wyjaśnione w lekcji czwartej, każda data posiada swoją liczbową reprezentację; w takim przypadku
należy jednak pamiętać, aby liczba mieściła się w przedziale od -657 434 do 2 958 465).
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Year(#2010-04-21 15:10:10#) | 2010 | |
Month(#2010-04-21#) | 4 | |
Day(#2010-04-21#) | 21 | |
Hour(#2010-04-21 15:10:10#) | 15 | |
Minute(#12:41:13#) | 41 | |
Second(#12:41:13#) | 13 | |
Odpowiednikami powyższych funkcji w arkuszu są kolejno:
=ROK(liczba_kolejna)
,
=MIESIĄC(liczba_kolejna)
,
=DZIEŃ(liczba_kolejna)
,
=GODZINA(liczba_kolejna)
,
=MINUTA(liczba_kolejna)
,
=SEKUNDA(liczba_kolejna)
.
Numer dnia tygodnia
Function Weekday(Data As Date, Optional FirstDayOfWeek As VbDayOfWeek) As Integer
Funkcja Weekday
zwraca numer dnia tygodnia na podstawie daty podanej jako argument Data
.
Dodatkowo funkcja umożliwia podanie opcjonalnego argumentu FirstDayOfWeek
określającego, który dzień
tygodnia ma być uznawany za pierwszy dzień tygodnia.
Argument FirstDayOfWeek
musi przyjąć którąś z następujących wartości (wartości te muszą być wpisane
bez cudzysłowów, są to tzw. wyliczenia, które zostaną omówione w dalszej części kursu):
WARTOŚĆ | PIERWSZY DZIEŃ TYGODNIA |
vbUseSystemDayOfWeek | używa ustawień systemowych |
vbMonday | poniedziałek |
vbTuesday | wtorek |
vbWednesday | środa |
vbThursday | czwartek |
vbFriday | piątek |
vbSaturday | sobota |
vbSunday | niedziela |
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Weekday(#2010-10-17#, vbSunday) | 1 | |
Weekday(#2010-10-17#, vbMonday) | 7 | |
Weekday(#2010-10-18#, vbMonday) | 1 | |
Odpowiednikiem funkcji Weekday
w arkuszu jest funkcja =DZIEŃ.TYG(Data, [zwracany_typ])
.
Dodawanie dat
Function DateAdd(Interval As String, Number As Double, Data As Date) As Date
Funkcja DateAdd
pozwala dodać do daty podanej jako argument Data
odpowiednią liczbę dni,
tygodni, miesięcy itd.
Funkcja składa się z trzech obowiązkowych argumentów:
Interval
- argument typu tekstowego; określa w jakich jednostkach czasu będzie określony dodawany przez Ciebie okres.
W poniższej tabelce przedstawiono wartości jakie może przyjmować argument Interval
wraz z wyjaśnieniem, jakiej jednostki czasu dotyczą.
Próba podania jako argumentu Interval
wartości spoza tej tabelki zakończy się wygenerowaniem błędu Run-time error '5': Invalid procedure Call or argument.
WARTOŚĆ INTERVAL | DODAWANE JEDNOSTKI CZASU |
"yyyy" | Lata |
"q" | Kwartały |
"m" | Miesiące |
"ww" | Tygodnie |
"d" | Dni |
"h" | Godziny |
"n" | Minuty |
"s" | Sekundy |
Number
- argument liczbowy określający ile danych jednostek ma zostać dodanych do daty bazowej.
Argument Number
może przyjmować zarówno liczby ujemne (wówczas podany okres czasu jest odejmowany od daty bazowej) jak i dodatnie.
Data
- argument typu datowego reprezentujący datę bazową, do której ma być dodawany podany okres czasu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
DateAdd("yy", 5, #2010-10-17#) | błąd! | argument Interval ma wartość yy, którego nie ma na liście dopuszczalnych wartości |
DateAdd("yyyy", 1, #2010-10-17#) | 2011-10-17 | argument Interval ma wartość yyyy, dodawany czas jest więc mierzony w latach; argument Number ma wartość 1, należy więc dodać jeden rok do daty bazowej określonej w argumencie Data czyli 17-10-2010. |
DateAdd("m", 2, #2010-10-17#) | 2010-12-17 | argument Interval ma wartość m, dodawany czas jest więc mierzony w miesiącach; argument Number ma wartość 2, należy więc dodać dwa miesiące do daty bazowej określonej w argumencie Data czyli 17-10-2010. |
DateAdd("ww", 5, #2010-10-17#) | 2010-11-21 | argument Interval ma wartość ww, dodawany czas jest więc mierzony w tygodniach; argument Number ma wartość 5, należy więc dodać pięć tygodni do daty bazowej określonej w argumencie Data czyli 17-10-2010. |
Funkcja DateAdd
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Różnica pomiędzy dwiema datami
Function DateDiff(Interval As String, Data1 As Date, Data2 As Date, _
Optional FirstDayOfWeek As vbDayOfWeek = vbSunday, _
Optional FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1) As Long
Funkcja DateDiff
pozwala wyznaczyć różnicę pomiędzy dwiema datami wyrażoną w różnych jednostkach czasu
- latach, miesiącach, tygodniach, dniach, godzinach itd.
Funkcja składa się z trzech obowiązkowych argumentów:
Interval
- argument typu tekstowego; określa w jakich jednostkach czasu będzie
określona różnica pomiędzy dwiema datami.
W poniższej tabelce przedstawiono wartości jakie może przyjmować argument Interval
wraz z wyjaśnieniem,
jakiej jednostki czasu dotyczą.
Próba podania jako argumentu Interval
wartości spoza tej tabelki
zakończy się wygenerowaniem błędu Run-time error '5': Invalid procedure Call or argument.
WARTOŚĆ INTERVAL | DODAWANE JEDNOSTKI CZASU |
"yyyy" | Lata |
"q" | Kwartały |
"m" | Miesiące |
"ww" | Tygodnie |
"d" | Dni |
"h" | Godziny |
"n" | Minuty |
"s" | Sekundy |
Data1
i Data2
- argumenty typu datowego określające daty,
pomiędzy którymi ma być wyliczona różnica.
Wartość Data1
jest odejmowana od wartości Data2
.
Oprócz tego w funkcji DateDiff
zdefiniowane są dwa argumenty opcjonalne pozwalające wyznaczyć sposób
określania pełnych tygodni (istotne tylko przy wyliczaniu różnicy w tygodniach, czyli podaniu jako argument
Interval
wartości "ww").
Pierwszy z tych argumentów to FirstDayOfWeek
, pozwalający określić, który dzień tygodnia ma być
uważany za jego początek.
Argument FirstDayOfWeek
musi przyjąć którąś z następujących wartości (wartości te muszą być wpisane
bez cudzysłowów, są to tzw. wyliczenia, które zostaną omówione w dalszej części kursu):
WARTOŚĆ | PIERWSZY DZIEŃ TYGODNIA |
vbUseSystemDayOfWeek | używa ustawień systemowych |
vbMonday | poniedziałek |
vbTuesday | wtorek |
vbWednesday | środa |
vbThursday | czwartek |
vbFriday | piątek |
vbSaturday | sobota |
vbSunday | niedziela |
Drugi argument opcjonalny to FirstWeekOfYear
, pozwalający określić, który tydzień ma być uznawany za pierwszy tydzień roku.
Argument FirstWeekOfYear
musi przyjąć którąś z następujących wartości (wartości te muszą być wpisane bez cudzysłowów, są to tzw. wyliczenia):
WARTOŚĆ | PIERWSZY TYDZIEŃ ROKU |
vbFirstFourDays | za pierwszy tydzień roku jest uznawany pierwszy tydzień, który posiada przynajmniej cztery styczniowe dni; jeżeli więc 1. stycznia przypada w piątek, 2. stycznia w sobotę, a 3. stycznia w niedzielę, to dopiero kolejny tydzień jest uznawany za pierwszy tydzień nowego roku |
vbFirstFullWeek | za pierwszy tydzień roku jest uznawany pierwszy tydzień, który w całości obejmuje tylko dni styczniowe; jeżeli więc przykładowo w poniedziałek był 31. grudnia, to dopiero kolejny tydzień uznawany jest za pierwszy tydzień nowego roku |
vbFirstJan1 | za pierwszy tydzień roku uznawany jest tydzień, w którym przypada 1. stycznia |
vbUseSystem | domyślne ustawienie systemowe |
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
DateDiff("ww", #2010-10-16#, #2010-10-17#, vbSunday) | 1 | 2010-10-16 to sobota, a 2010-10-17 niedziela; za pomocą argumentu FirstDayOfWeek = vbSunday określono, że za pierwszy dzień tygodnia uznawana jest niedziela, dlatego dnia 17 października rozpoczyna się już nowy tydzień, a więc w porównaniu z 16 października dzień ten należy do następnego tygodnia - różnica między tygodniami wynosi więc 1 |
DateDiff("ww", #2010-10-16#, #2010-10-17#, vbMonday) | 0 | sytuacja podobna jak powyżej, ale pierwszym dniem tygodnia jest poniedziałek, dlatego 16 i 17 października należą do tego samego tygodnia (różnica między tygodniami wynosi więc 0) |
DateDiff("m", #2010-11-01#, #2010-10-17#) | -1 | |
DateDiff("m", #2010-10-17#, #2010-11-01#) | 1 | |
DateDiff("yyyy", #2000-01-01#, #2010-10-17#) | 10 | |
Funkcja DateDiff
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Obliczanie numeru dnia, tygodnia itp. w roku kalendarzowym
Function DatePart(Interval As String, Data As Date, _
Optional FirstDayOfWeek As vbDayOfWeek = vbSunday, _
Optional FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1) As Integer
Funkcja DatePart
pozwala określić w którym dniu roku, dniu miesiąca itp. przypada określona data.
Funkcja składa się z dwóch obowiązkowych argumentów:
Interval
- argument typu tekstowego; określa w jakich jednostkach czasu będzie wyrażony wynik funkcji.
W poniższej tabelce przedstawiono wartości jakie może przyjmować argument Interval
wraz z wyjaśnieniem, jakiej jednostki czasu dotyczą.
Próba podania jako argumentu Interval
wartości spoza tej tabelki zakończy się wygenerowaniem błędu Run-time error '5': Invalid procedure Call or argument.
WARTOŚĆ INTERVAL | TYP ZWRACANEGO WYNIKU |
"yyyy" | numer roku |
"q" | numer kwartału |
"m" | numer miesiąca |
"ww" | numer tygodnia w roku |
"y" | numer dnia w roku |
"d" | numer dnia w miesiącu |
"w" | numer dnia w tygodniu (na podstawie wartości argumentu FirstDayOfWeek ) |
"h" | Godziny |
"n" | Minuty |
"s" | Sekundy |
Data
- argument typu datowego określający datę bazową, dla której wyliczany jest numer dnia, miesiąca itd.
W funkcji DatePart
zdefiniowane są też dwa argumenty opcjonalne: FirstDayOfWeek
oraz
FirstWeekOfYear
.
Pierwszy z tych argumentów - FirstDayOfWeek
- pozwala określić, który dzień tygodnia ma być uważany za
jego początek.
Argument FirstDayOfWeek
musi przyjąć którąś z następujących wartości (wartości te muszą być wpisane bez
cudzysłowów, są to tzw. wyliczenia, które zostaną omówione w dalszej części kursu):
WARTOŚĆ | PIERWSZY DZIEŃ TYGODNIA |
vbUseSystemDayOfWeek | używa ustawień systemowych |
vbMonday | poniedziałek |
vbTuesday | wtorek |
vbWednesday | środa |
vbThursday | czwartek |
vbFriday | piątek |
vbSaturday | sobota |
vbSunday | niedziela |
Drugi argument opcjonalny - FirstWeekOfYear
- pozwala z kolei określić, który tydzień ma być uznawany
za pierwszy tydzień roku.
Argument FirstWeekOfYear
musi przyjąć którąś z następujących wartości (wartości te muszą być wpisane
bez cudzysłowów, są to tzw. wyliczenia, które zostaną omówione w dalszej części kursu):
WARTOŚĆ | PIERWSZY TYDZIEŃ ROKU |
vbFirstFourDays | za pierwszy tydzień roku jest uznawany pierwszy tydzień, który posiada przynajmniej cztery styczniowe dni; jeżeli więc 1. stycznia przypada w piątek, 2. stycznia w sobotę, a 3. stycznia w niedzielę, to dopiero kolejny tydzień jest uznawany za pierwszy tydzień nowego roku |
vbFirstFullWeek | za pierwszy tydzień roku jest uznawany pierwszy tydzień, który w całości obejmuje tylko dni styczniowe; jeżeli więc przykładowo w poniedziałek był 31. grudnia, to dopiero kolejny tydzień uznawany jest za pierwszy tydzień nowego roku |
vbFirstJan1 | za pierwszy tydzień roku uznawany jest tydzień, w którym przypada 1. stycznia |
vbUseSystem | domyślne ustawienie systemowe |
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
DatePart("w", #2010-10-17#, vbMonday) | 7 | zwraca dzień tygodnia dla 17 października przy założeniu, że poniedziałek uznawany jest za pierwszy dzień tygodnia |
DatePart("ww", #2010-10-17#) | 43 | zwraca numer tygodnia w roku, w którym przypadła data 17 października |
DatePart("ww", #2010-10-17#, , vbFirstJan1) | 42 | zwraca numer tygodnia w roku, w którym przypadła data 17 października, przy założeniu, że za pierwszy tydzień roku uznawany jes ten, w którym wypadła data 1 stycznia |
DatePart("yyyy", #2010-10-17#) | 2010 | zwraca numer roku |
DatePart("y", #2010-10-17#) | 290 | zwraca numer dnia w roku dla daty 17 października |
Funkcja DatePart
nie ma swojego odpowiednika wśród funkcji arkuszowych.
Funkcje konwersji danych i funkcje informacyjne
Funkcje konwersji danych zajmują się zamianą jednego typu danych na inny. Funkcje informacyjne służą natomiast
do uzyskiwania informacji na temat zmiennych.
Konwersja do typu logicznego (Boolean)
Function CBool(Expression) As Boolean
Funkcja CBool
zwraca wartość logiczną True
lub False
na podstawie argumentu
Expression
.
Dopuszczalnymi wartościami dla argumentu Expression
są wszystkie liczby oraz wartości tekstowe
True i False.
Dla każdej innej wartości argumentu Expression
funkcja wygeneruje błąd.
Funkcja zwraca wartość False
w sytuacji, gdy argument Expression
ma wartość tekstową
False lub wartość liczbową 0.
Wartość True
jest natomiast zwracana w sytuacji, kiedy jako argument Expression
podana
jest wartość tekstowa True lub wartość liczbowa inna niż 0.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
CBool("a") | błąd! | nieprawidłowa wartość argumentu Expression ; jedynymi dopuszczalnymi wartościami tekstowymi są False i True |
CBool("False") | False | |
CBool("True") | True | |
CBool(0) | False | |
CBool(1) | True | |
CBool(-1) | True | |
CBool(0.1) | True | |
Konwersja do typu tekstowego (String)
Function CStr(Expression) As String
Funkcja CStr
zwraca tekstowy odpowiednik argumentu Expression
.
Jako argument Expression
funkcji CStr
może być podana wartość dowolnego typu.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
Cstr(10) | 10 | |
Cstr(0.23) | 0.23 | |
Cstr(False) | False | |
Cstr(#2010-01-01#) | 2010-01-01 | |
Konwersja do typów liczbowych
Function CByte(Expression) As Byte
Function CCur(Expression) As Currency
Function CDbl(Expression) As Double
Function CInt(Expression) As Integer
Function CLng(Expression) As Long
Function CSng(Expression) As Single
Powyższe funkcje konwertują argument Expression
do odpowiedniego typu liczbowego.
Jako argument Expression
każdej z powyższych funkcji może być podana wartość liczbowa, data lub reprezentacja
tekstowa liczby, ale tylko taka, która nie przekracza zakresu typu zwracanego w wyniku.
Przykładowo dla funkcji CByte
, która zwraca w wyniku wartości typu Byte
, jako argument mogą być
podane tylko liczby lub reprezentacje tekstowe liczb z zakresu 0-255 (bo tylko taki zakres obejmuje typ Byte
),
natomiast dla funkcji CInt
liczby i reprezentacje tekstowe liczb z zakresu od -32 768 do 32 767.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
CByte("a") | błąd! | jedyne dopuszczalne wartości tekstowe dla argumentu Expression to tekstowe reprezentacje liczb |
CByte("300") | błąd! | wprawdzie 300 jest tekstową reprezentacją liczby, ale wynik 300 przekroczyłby dopuszczalny zakres typu Byte , który wynosi 0-255 |
CByte(100.23) | 100 | |
CInt(1000) | 1000 | |
CInt(50000) | błąd! | wynik 50000 przekroczyłby dopuszczalny zakres typu Integer , który wynosi -32 768 - 32 767 |
Konwersja do typu daty i czasu
Function CDate(Expression) As Date
Funkcja CDate
konwertuje argument Expression
do postaci daty lub czasu.
Jako argument Expression
można podawać liczby z zakresu od -657 434 do 2 958 465 oraz
tekstowe reprezentacje dat lub liczb.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
CDate("x") | błąd! | jedyne dopuszczalne wartości tekstowe dla argumentu Expression to tekstowe reprezentacje dat lub liczb |
CDate(-700000) | błąd! | liczba podana w argumencie przekracza dopuszczalny zakres |
CDate("2010-01-01") | 2010-01-01 | |
CDate(40000) | 2009-07-06 | |
CDate("40000") | 2009-07-06 | |
Sprawdzanie typu zmiennej
Function TypeName(VarName) As String
Funkcja TypeName
zwraca nazwę typu zmiennej lub wartości podanej jako argument VarName
.
Funkcja TypeName
jest bardzo elastyczna i nie generuje błędów nawet w przypadku podania jako argument
nieistniejącej zmiennej - w takiej sytuacji funkcja zwraca tekst Empty.
Jedyną sytuacją, w której funkcja TypeName
generuje błąd, jest próba wywołania jej bezpodania argumentów.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
TypeName() | błąd! | Funkcja TypeName nie może być wywołana bez podania argumentu |
TypeName(nieistniejaca) | Empty | w przypadku podania jako argument nieistniejącej zmiennej, funkcja zwraca tekst Empty |
TypeName(#2010-01-01#) | Date | jako argument oprócz zmiennej może być też podana po prostu wartość; w tym przypadku podano datę, dlatego też funkcja zwraca tekst Date |
TypeName("a") | String | |
TypeName(1) | Long | |
TypeName(1.1) | Double | |
Sprawdzanie czy wartość zmiennej jest liczbą
Function IsNumeric(Expression) As Boolean
Funkcja IsNumeric
sprawdza czy zmienna lub wartość podana jako argument Expression
jest
liczbą. Funkcja zwraca wartość typu Boolean
: True
dla wyrażeń liczbowych oraz
False
dla nieliczbowych.
Funkcja IsNumeric
zwraca wartość True
także dla tekstowych reprezentacji liczb.
Natomiast dla dat, mimo iż każda data posiada swoją reprezentacją liczbową, funkcja ta zwraca wartość
False
.
Funkcja IsNumeric
jest tak samo elastyczna jak opisywana przed momentem funkcja TypeName
i
generuje błąd tylko w przypadku próby wywołania jej bez podania argumentu.
Bardzo dziwną właściwością funkcji IsNumeric
jest to, że w przypadku podania jako argument nieistniejącej
zmiennej funkcja zwraca wartość True
.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
IsNumeric(xyz) | True | dla nieistniejących argumentów funkcja IsNumeric zwraca wartość True ! |
IsNumeric("a") | False | |
IsNumeric("1") | True | wprawdzie podana jako argument wartość jest tekstem, ale jest zarazem tekstową reprezentacją liczby 1 |
IsNumeric(#2010-01-01#) | False | daty są traktowane przez funkcję IsNumeric jak nie-liczby |
IsNumeric(100) | True | |
Sprawdzanie czy wartość zmiennej jest datą
Function IsDate(Expression) As Boolean
Funkcja IsDate
sprawdza czy zmienna lub wartość podana jako argument Expression
jest datą.
Funkcja zwraca wartość typu Boolean
: True
dla dat i tekstowych reprezentacji dat oraz
False
dla zmiennych i wartości nie będących datami.
Mimo że, jak już kilkukrotnie zostało wspomniane, każda data posiada swoją liczbową reprezentację i w wielu sytuacjach
kompilator automatycznie konwertuje liczby na odpowiadające im daty, funkcja IsDate
zwraca wartość
False
dla wartości i zmiennych liczbowych.
Funkcja IsDate
jest tak samo elastyczna jak opisywana wcześniej funkcja IsNumeric
i
generuje błąd tylko w przypadku próby wywołania jej bez podania argumentu. W odróżnieniu jednak od funkcji
IsNumeric
, w przypadku podania jako argument nieistniejącej zmiennej funkcja zwraca wartość
False
.
Przykładowe wyniki działania funkcji
FUNKCJA | WYNIK | UWAGI |
IsDate(xyz) | False | dla nieistniejących zmiennych funkcja zwraca wartość False |
IsDate(40000) | False | mimo że każda liczba reprezentuje jakąś datę, w przypadku podania jako argument liczby funkcja zwraca wartość False |
IsDate("2010-01-01") | True | |
IsDate(2010-01-01) | True | |
Funkcje arkuszowe
Pisząc makra z użyciem języka VBA możesz korzystać również z większości tradycyjnych funkcji arkuszowych,
takich jak np. =WYSZUKAJ.PIONOWO()
, =MAX()
, =MIN()
itd.
To na pewno doskonała wiadomość dla osób dobrze zaznajomionych z funkcjami arkuszowymi, które zaczynają
dopiero swoją przygodę z VBA, ponieważ od początku będą mogły korzystać w programowaniu z elementu, który
już świetnie znają.
Spośród funkcji arkuszowych w VBA nie są dostępne te, które mają swoje dokładne odpowiedniki wśród opisanych
wcześniej funkcji wbudowanych.
Wykorzystanie w VBA funkcji arkuszowych wymaga przede wszystkim znajomości ich angielskich nazw. Jeżeli nie znasz
angielskich nazw funkcji, na końcu tego podrozdziału znajdziesz tabelkę zawierającą wykaz funkcji arkuszowych,
wraz z ich angielskimi odpowiednikami.
Aby skorzystać w VBA z funkcji arkuszowych musisz poprzedzić ich nazwę poleceniem
Applicaton.WorksheetFunction.
, a następnie wpisać nazwę funkcji.
Postać ogólna przedstawia się więc następująco:
zmienna = Application.WorksheetFunction.nazwaFunkcji(argumenty)
Kiedy wpiszesz w edytorze VBA polecenia Application.WorksheetFunction.
(zwróć uwagę na kropki po każdym z tych słów kluczowych!), edytor wyświetli listę rozwijaną zawierającą nazwy
wszystkich dostępnych funkcji, tak jak pokazano na poniższym rysunku:
Używając w VBA funkcji arkuszowych zwracaj uwagę na zgodność typów podanych przez Ciebie argumentów z typami
wymaganymi przez daną funkcję.
W przypadku niektórych funkcji, po wpisaniu jej nazwy i nawiasu otwierającego, edytor VBA wyświetla ramkę z
podpowiedzią na temat wymaganych typów argumentów.
Na poniższym rysunku przedstawiono przykład wywołania w VBA funkcji arkuszowej =ASC()
, zwracającej
kod znaku, dla której edytor VBA wyświetlił podpowiedź wskazującą, że podany musi zostać argument typu tekstowego.
Jednak dla innych funkcji edytor VBA wyświetla tylko informację o wymaganej liczbie argumentów, nie informując o
wymaganych typach.
Przykładem takiej funkcji jest zaprezentowana poniżej funkcja =WYSZUKAJ.PIONOWO()
(ang. VLOOKUP()
), dla której edytor VBA wyświetlił informację o trzech argumentach wymaganych i
jednym opcjonalnym, nie podając jednak żadnych wskazówek na temat ich typów.
Szczegółowy opis funkcji oraz argumentów przez nie wymaganych możesz znaleźć klikając dwukrotnie wybraną funkcję
w oknie Wstawianie funkcji (otwieranie tego okna zostało omówione
w poprzedniej lekcji).
Poniższa tabelka zawiera wykaz wszystkich funkcji arkuszowych dostępnych w Excelu 2003. W prawej kolumnie
tabeli znajduje się odpowiednik danej funkcji w VBA.
Na niebiesko oznaczone zostały funkcje, których odpowiedniki należą do funkcji wbudowanych VBA, omówionych podczas
tej lekcji.
Zielonym kolorem oznaczono funkcje, które są wywoływane za pomocą polecenia
Application.WorksheetFunction.
Czerwonym kolorem zaznaczono funkcje arkuszowe, które nie są dostępne w VBA (oczywiście zawsze można samodzielnie
dopisać własne wersje tych funkcji).
Funkcje arkuszowe i ich odpowiedniki w VBA
FUNKCJA ARKUSZOWA | NAZWA W VBA |
ACOS | Application.WorksheetFunction.Acos |
ACOSH | Application.WorksheetFunction.Acosh |
ADR.POŚR | brak |
ADRES | brak |
ASIN | Application.WorksheetFunction.Asin |
ASINH | Application.WorksheetFunction.Asinh |
ATAN | Atan |
ATAN2 | Application.WorksheetFunction.Atan2 |
ATANH | Application.WorksheetFunction.Atanh |
BAHTTEXT | Application.WorksheetFunction.BahtText |
BD.ILE.REKORDÓW | Application.WorksheetFunction.DCount |
BD.ILE.REKORÓW.A | Application.WorksheetFunction.DCountA |
BD.ILOCZYN | Application.WorksheetFunction.DProduct |
BD.MAX | Application.WorksheetFunction.DMax |
BD.MIN | Application.WorksheetFunction.DMin |
BD.ODCH.STANDARD | Application.WorksheetFunction.DStDev |
BD.ODCH.STANDARD.POPUL | Application.WorksheetFunction.DStDevP |
BD.POLE | Application.WorksheetFunction.DGet |
BD.SUMA | Application.WorksheetFunction.DSum |
BD.ŚREDNIA | Application.WorksheetFunction.DAverage |
BD.WARIANCJA | Application.WorksheetFunction.DVar |
BD.WARIANCJA.POPUL | Application.WorksheetFunction.DVarP |
BRAK | brak |
COS | Cos |
COSH | Application.WorksheetFunction.Cosh |
CZAS | TimeSerial |
CZAS.WARTOŚĆ | CDate |
CZĘSTOŚĆ | Application.WorksheetFunction.Frequency |
CZY.ADR | brak |
CZY.BŁ | Application.WorksheetFunction.IsErr |
CZY.BŁĄD | Application.WorksheetFunction.IsError |
CZY.BRAK | Application.WorksheetFunction.IsNA |
CZY.LICZBA | Application.WorksheetFunction.IsNumber |
CZY.LOGICZNA | Application.WorksheetFunction.IsLogical |
CZY.NIE.TEKST | Application.WorksheetFunction.IsNonText |
CZY.PUSTA | IsEmpty |
CZY.TEKST | Application.WorksheetFunction.IsText |
DATA | DateSerial |
DATA.WARTOŚĆ | CDate |
DB | Application.WorksheetFunction.Db |
DDB | Application.WorksheetFunction.Ddb |
DŁ | Len |
DNI.360 | Application.WorksheetFunction.Days360 |
DZIEŃ | Day |
DZIEŃ.TYG | Application.WorksheetFunction.Weekday |
DZIŚ | Date |
EXP | Exp |
FRAGMENT.TEKSTU | Mid |
FV | Application.WorksheetFunction.Fv |
GODZINA | Hour |
HIPERŁĄCZE | brak |
ILE.LICZB | Application.WorksheetFunction.Count |
ILE.NIEPUSTYCH | Application.WorksheetFunction.CountA |
ILE.WIERSZY | brak |
ILOCZYN | Application.WorksheetFunction.Product |
IMPT | Application.WorksheetFunction.Ipmt |
INDEKS | Application.WorksheetFunction.Index |
INFO | brak |
IRR | Application.WorksheetFunction.Irr |
ISPMT | Application.WorksheetFunction.Ispmt |
JEŻELI | If |
KOD | Application.WorksheetFunction.Asc |
KOMBINACJE | Application.WorksheetFunction.Combin |
KOMÓRKA | brak |
KOWARIANCJA | Application.WorksheetFunction.Covar |
KURTOZA | Application.WorksheetFunction.Kurt |
KWARTYL | Application.WorksheetFunction.Quartile |
KWOTA | Application.WorksheetFunction.Dollar |
L | brak |
LEWY | Left |
LICZ.JEŻELI | Application.WorksheetFunction.CountIf |
LICZ.PUSTE | Application.WorksheetFunction.CountBlank |
LICZBA.CAŁK | Int |
LICZBA.KOLUMN | brak |
LITERY.MAŁE | LCase |
LITERY.WIELKIE | UCase |
LN | Application.WorksheetFunction.Ln |
LOG | Application.WorksheetFunction.Log |
LOG10 | Application.WorksheetFunction.Log10 |
LOS | Rnd |
LUB | Application.WorksheetFunction.Or |
MACIERZ.ILOCZYN | Application.WorksheetFunction.MMult |
MACIERZ.ODW | Application.WorksheetFunction.Minverse |
MAX | Application.WorksheetFunction.Max |
MAX.A | brak |
MAX.K | Application.WorksheetFunction.Large |
MEDIANA | Application.WorksheetFunction.Median |
MIESIĄC | Month |
MIN | Application.WorksheetFunction.Min |
MIN.A | brak |
MIN.K | Application.WorksheetFunction.Small |
MINUTA | Minute |
MIRR | Application.WorksheetFunction.MIrr |
MOD | Mod |
MODUŁ.LICZBY | Abs |
NACHYLENIE | Application.WorksheetFunction.Slope |
NIE | Not |
NORMALIZUJ | Application.WorksheetFunction.Standardize |
NPER | Application.WorksheetFunction.NPer |
NPV | Application.WorksheetFunction.Npv |
NR.BŁĘDU | brak |
NR.KOLUMNY | brak |
OBSZARY | brak |
OCZYŚĆ | Application.WorksheetFunction.Clean |
ODCH.KWADRATOWE | Application.WorksheetFunction.DevSq |
ODCH.STANDARD.POPUL | Application.WorksheetFunction.StDevP |
ODCH.STANDARD.POPUL.A | brak |
ODCH.STANDARDOWE | Application.WorksheetFunction.StDev |
ODCH.STANDARDOWE.A | brak |
ODCH.ŚREDNIE | Application.WorksheetFunction.AveDev |
ODCIĘTA | Application.WorksheetFunction.Intercept |
ORAZ | Application.WorksheetFunction.And |
PEARSON | Application.WorksheetFunction.Pearson |
PERCENTYL | Application.WorksheetFunction.Percentile |
PERMUTACJE | Application.WorksheetFunction.Permut |
PI | Application.WorksheetFunction.Pi |
PIERWIASTEK | Sqr |
PMT | Application.WorksheetFunction.Pmt |
PODAJ.POZYCJĘ | Application.WorksheetFunction.Match |
PODSTAW | Application.WorksheetFunction.Substitute |
PORÓWNAJ | brak |
POTĘGA | Application.WorksheetFunction.Power |
POWT | Application.WorksheetFunction.Rept |
POZYCJA | Application.WorksheetFunction.Rank |
PPMT | Application.WorksheetFunction.Ppmt |
PRAWDPD | Application.WorksheetFunction.Prob |
PRAWY | Right |
PROCENT.POZYCJA | Application.WorksheetFunction.PercentRank |
PRÓG.ROZKŁAD.DWUM | Application.WorksheetFunction.CritBinom |
PRZESUNIĘCIE | Offset |
PV | Application.WorksheetFunction.Pv |
R.KWADRAT | Application.WorksheetFunction.RSq |
RADIANY | Application.WorksheetFunction.Radians |
RATE | Application.WorksheetFunction.Rate |
REGBŁSTD | Application.WorksheetFunction.StEyx |
REGEXPP | Application.WorksheetFunction.LogEst |
REGEXPW | Application.WorksheetFunction.Growth |
REGLINP | Application.WorksheetFunction.LinEst |
REGLINW | Application.WorksheetFunction.Trend |
REGLINX | Application.WorksheetFunction.Forecast |
ROK | Year |
ROZKŁAD.BETA | Application.WorksheetFunction.BetaDist |
ROZKŁAD.BETA.ODW | Application.WorksheetFunction.BetaInv |
ROZKŁAD.CHI | Application.WorksheetFunction.ChiDist |
ROZKŁAD.CHI.ODW | Application.WorksheetFunction.ChiInv |
ROZKŁAD.DWUM | Application.WorksheetFunction.BinomDist |
ROZKŁAD.DWUM.PRZEC | Application.WorksheetFunction.NegBinomDist |
ROZKŁAD.EXP | Application.WorksheetFunction.ExponDist |
ROZKŁAD.F | Application.WorksheetFunction.FDist |
ROZKŁAD.F.ODW | Application.WorksheetFunction.FInv |
ROZKŁAD.FISHER | Application.WorksheetFunction.Fisher |
ROZKŁAD.FISHER.ODW | Application.WorksheetFunction.FisherInv |
ROZKŁAD.GAMMA | Application.WorksheetFunction.GammaDist |
ROZKŁAD.GAMMA.ODW | brak |
ROZKŁAD.HIPERGEOM | Application.WorksheetFunction.HypGeomDist |
ROZKŁAD.LIN.GAMMA | Application.WorksheetFunction.GammaLn |
ROZKŁAD.LOG | Application.WorksheetFunction.LogNormDist |
ROZKŁAD.LOG.ODW | Application.WorksheetFunction.LogInv |
ROZKŁAD.NORMALNY | Application.WorksheetFunction.NormDist |
ROZKŁAD.NORMALNY.ODW | Application.WorksheetFunction.NormInv |
ROZKŁAD.NORMALNY.S | Application.WorksheetFunction.NormSDist |
ROZKŁAD.NORMALNY.S.ODW | Application.WorksheetFunction.NormSInv |
ROZKŁAD.POISSON | Application.WorksheetFunction.Poisson |
ROZKŁAD.T | Application.WorksheetFunction.TDist |
ROZKŁAD.T.ODW | Application.WorksheetFunction.TInv |
ROZKŁAD.WEIBULL | Application.WorksheetFunction.Weibull |
RTD | Application.WorksheetFunction.RTD |
RZYMSKIE | Application.WorksheetFunction.Roman |
SEKUNDA | Second |
SILNIA | Application.WorksheetFunction.Fact |
SIN | Sin |
SINH | Application.WorksheetFunction.Sinh |
SKOŚNOŚĆ | Application.WorksheetFunction.Skew |
SLN | Application.WorksheetFunction.Sln |
STOPNIE | Application.WorksheetFunction.Degrees |
SUMA | Application.WorksheetFunction.Sum |
SUMA.ILOCZYNÓW | Application.WorksheetFunction.SumProduct |
SUMA.JEŻELI | Application.WorksheetFunction.SumIf |
SUMA.KWADRATÓW | Application.WorksheetFunction.SumSq |
SUMA.X2.M.Y2 | Application.WorksheetFunction.SumX2MY2 |
SUMA.X2.P.Y2 | Application.WorksheetFunction.SumX2PY2 |
SUMA.XMY.2 | Application.WorksheetFunction.SumXMY2 |
SUMY.POŚREDNIE | Application.WorksheetFunction.Subtotal |
SYD | Application.WorksheetFunction.Syd |
SZUKAJ.TEKST | Application.WorksheetFunction.Search |
ŚREDNIA | Application.WorksheetFunction.Average |
ŚREDNIA.GEOMETRYCZNA | Application.WorksheetFunction.GeoMean |
ŚREDNIA.HARMONICZNA | Application.WorksheetFunction.HarMean |
ŚREDNIA.WEWN | Application.WorksheetFunction.TrimMean |
T | brak |
TAN | Tan |
TANH | Application.WorksheetFunction.Tanh |
TEKST | Application.WorksheetFunction.Text |
TERAZ | Now |
TEST.CHI | Application.WorksheetFunction.ChiTest |
TEST.F | Application.WorksheetFunction.FTest |
TEST.T | Application.WorksheetFunction.TTest |
TEST.Z | Application.WorksheetFunction.ZTest |
TRANSPONUJ | Application.WorksheetFunction.Transpose |
TYP | brak |
UFNOŚĆ | Application.WorksheetFunction.Confidence |
USUŃ.ZBĘDNE.ODSTĘPY | Application.WorksheetFunction.Trim |
VDB | Application.WorksheetFunction.Vdb |
WARIANCJA | Application.WorksheetFunction.Var |
WARIANCJA.A | brak |
WARIANCJA.POPUL | Application.WorksheetFunction.VarP |
WARIANCJA.POPUL.A | brak |
WARTOŚĆ | CByte / CInteger / CLong / CSingle / CDouble |
WEŹDANETABELI | brak |
WIERSZ | brak |
WSP.KORELACJI | Application.WorksheetFunction.Correl |
WYBIERZ | Application.WorksheetFunction.Choose |
WYST.NAJCZĘŚCIEJ | Application.WorksheetFunction.Mode |
WYSZUKAJ | Application.WorksheetFunction.Lookup |
WYSZUKAJ.PIONOWO | Application.WorksheetFunction.VLookup |
WYSZUKAJ.POZIOMO | Application.WorksheetFunction.HLookup |
WYZNACZNIK.MACIERZY | Application.WorksheetFunction.MDeterm |
ZAOKR | Application.WorksheetFunction.Round |
ZAOKR.DO.CAŁK | Int |
ZAOKR.DO.NPARZ | Application.WorksheetFunction.Odd |
ZAOKR.DO.PARZ | Application.WorksheetFunction.Even |
ZAOKR.DO.TEKST | Application.WorksheetFunction.Fixed |
ZAOKR.DÓŁ | Application.WorksheetFunction.RoundDown |
ZAOKR.GÓRA | Application.WorksheetFunction.RoundUp |
ZAOKR.W.DÓŁ | Application.WorksheetFunction.Floor |
ZAOKR.W.GÓRĘ | Application.WorksheetFunction.Ceiling |
ZASTĄP | Application.WorksheetFunction.Replace |
ZŁĄCZ.TEKSTY | & |
ZNAJDŹ | Application.WorksheetFunction.Find |
ZNAK | Chr |
ZNAK.LICZBY | Sgn |