07 - Funkcje wbudowane


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 wbudowane zostały podzielone na następujące kategorie:

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

FUNKCJAWYNIKUWAGI
"a" & "b"ab
1 & 212
1 & "a" & True1aTrue

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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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).

Formatowanie tekstu

 
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.

FORMATOPIS
General Datedata sformatowana wg ustawień systemowych Twojego komputera
Long Datedata w pełnej postaci, np. 16 październik 2010
Medium Datedata w postaci dd-skrócona nazwa miesiąca-yy (np. 16-paź-10)
Short Datedata w postaci yyyy-mm-dd (np. 2010-10-16)
Long Timeczas w postaci hh:mm:ss (np. 21:04:25)
Medium Timeczas w postaci hh:mm w systemie 12-godzinnym (np. 09:04)
Short Timeczas w postaci hh:mm w systemie 24-godzinnym (np. 21:04)
mm/dd/yyyydata w postaci mm-dd-yyyy (np. 10-16-2010)
dd/mm/yydata 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)
####.0liczba bez separatorów tysięcy, wyświetlająca tyle miejsc dziesiętnych ile zer znajduje się po kropce (np. 1500,0)
#,###.00liczba 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

FUNKCJAWYNIKUWAGI
Format("a", "General Date")awartości tekstowe nie są zmieniane przez funkcję Format
Format(40000, "General Date")2009-07-06na 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

FUNKCJAWYNIKUWAGI
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")0tekst tekst nie znajduje się w tekście eks
InStr(1, "tekst", "eks")2fragment tekstu eks znajduje się w tekście tekst i rozpoczyna się od drugiego znaku
InStr(3, "tekst", "eks")0wprawdzie 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")4przy 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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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)abcargument 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

FUNKCJAWYNIKUWAGI
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)lsfragment tekstu Polska rozpoczynający się od trzeciego znaku i liczący dwa znaki
Mid("Polska", 3)lskafragment 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)lskafragment 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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
Replace("tekst tekst tekst", "ks", "x")text text textwszystkie wystąpienie tekstu ks w tekście bazowym zostały zamienione na x
Replace("tekst tekst tekst", "t", "")eks eks ekswszystkie 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 tekstwystą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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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
vbUseSystemDayOfWeekużywa ustawień systemowych
vbMondayponiedziałek
vbTuesdaywtorek
vbWednesdayśroda
vbThursdayczwartek
vbFridaypiątek
vbSaturdaysobota
vbSundayniedziela

Przykładowe wyniki działania funkcji

FUNKCJAWYNIKUWAGI
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:
OPERACJAOPIS
a^bpodniesienie liczby a do potęgi b
-azmiana znaku liczby a
a*bmnożenie liczby a przez liczbę b
a/bdzielenie liczby a przez liczbę b
a\bdzielenie całkowite liczby a przez liczbę b (zwraca tylko część całkowitą wyniku dzielenia)
a Mod bzwracanie reszty z dzielenia liczby a przez liczbę b
a+bdodawanie liczb a i b
a-bodejmowanie 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

 
Function Abs(Number)

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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
Round("a")błąd!argument Liczba nie jest liczbą
Round(2,-1)błąd!argument IleZnakow nie jest liczbą nieujemną
Round(2.5)3nie 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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

 
Function Rnd() As Double

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

FUNKCJAWYNIKUWAGI
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 Date() As Date
 
Function Time() As Date
 
Function Now() As Date
 
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:
FUNKCJAWYNIKUWAGI
Date()2010-10-17
Time()16:08:28
Now()2010-10-17 16:08:28
Timer()58108,7tyle 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

FUNKCJAWYNIKUWAGI
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
vbUseSystemDayOfWeekużywa ustawień systemowych
vbMondayponiedziałek
vbTuesdaywtorek
vbWednesdayśroda
vbThursdayczwartek
vbFridaypiątek
vbSaturdaysobota
vbSundayniedziela

Przykładowe wyniki działania funkcji

FUNKCJAWYNIKUWAGI
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ŚĆ INTERVALDODAWANE 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

FUNKCJAWYNIKUWAGI
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-17argument 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-17argument 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-21argument 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ŚĆ INTERVALDODAWANE 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
vbUseSystemDayOfWeekużywa ustawień systemowych
vbMondayponiedziałek
vbTuesdaywtorek
vbWednesdayśroda
vbThursdayczwartek
vbFridaypiątek
vbSaturdaysobota
vbSundayniedziela

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
vbFirstFourDaysza 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
vbFirstFullWeekza 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
vbFirstJan1za pierwszy tydzień roku uznawany jest tydzień, w którym przypada 1. stycznia
vbUseSystemdomyślne ustawienie systemowe

Przykładowe wyniki działania funkcji

FUNKCJAWYNIKUWAGI
DateDiff("ww", #2010-10-16#, #2010-10-17#, vbSunday)12010-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)0sytuacja 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ŚĆ INTERVALTYP 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
vbUseSystemDayOfWeekużywa ustawień systemowych
vbMondayponiedziałek
vbTuesdaywtorek
vbWednesdayśroda
vbThursdayczwartek
vbFridaypiątek
vbSaturdaysobota
vbSundayniedziela

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
vbFirstFourDaysza 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
vbFirstFullWeekza 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
vbFirstJan1za pierwszy tydzień roku uznawany jest tydzień, w którym przypada 1. stycznia
vbUseSystemdomyślne ustawienie systemowe

Przykładowe wyniki działania funkcji

FUNKCJAWYNIKUWAGI
DatePart("w", #2010-10-17#, vbMonday)7zwraca dzień tygodnia dla 17 października przy założeniu, że poniedziałek uznawany jest za pierwszy dzień tygodnia
DatePart("ww", #2010-10-17#)43zwraca numer tygodnia w roku, w którym przypadła data 17 października
DatePart("ww", #2010-10-17#, , vbFirstJan1)42zwraca 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#)2010zwraca numer roku
DatePart("y", #2010-10-17#)290zwraca 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.

Poniżej znajdują się odnośniki do omówionych funkcji konwersji i informacyjnych:

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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
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

FUNKCJAWYNIKUWAGI
TypeName()błąd!Funkcja TypeName nie może być wywołana bez podania argumentu
TypeName(nieistniejaca)Emptyw przypadku podania jako argument nieistniejącej zmiennej, funkcja zwraca tekst Empty
TypeName(#2010-01-01#)Datejako 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

FUNKCJAWYNIKUWAGI
IsNumeric(xyz)Truedla nieistniejących argumentów funkcja IsNumeric zwraca wartość True!
IsNumeric("a")False
IsNumeric("1")Truewprawdzie podana jako argument wartość jest tekstem, ale jest zarazem tekstową reprezentacją liczby 1
IsNumeric(#2010-01-01#)Falsedaty 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

FUNKCJAWYNIKUWAGI
IsDate(xyz)Falsedla nieistniejących zmiennych funkcja zwraca wartość False
IsDate(40000)Falsemimo ż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:

Rozwijana lista z nazwami funkcji arkuszowych

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.

Podpowiadanie typów argumentów

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.

Brak podpowiedzi na temat typów argumentó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 ARKUSZOWANAZWA W VBA
ACOSApplication.WorksheetFunction.Acos
ACOSHApplication.WorksheetFunction.Acosh
ADR.POŚRbrak
ADRESbrak
ASINApplication.WorksheetFunction.Asin
ASINHApplication.WorksheetFunction.Asinh
ATANAtan
ATAN2Application.WorksheetFunction.Atan2
ATANHApplication.WorksheetFunction.Atanh
BAHTTEXTApplication.WorksheetFunction.BahtText
BD.ILE.REKORDÓWApplication.WorksheetFunction.DCount
BD.ILE.REKORÓW.AApplication.WorksheetFunction.DCountA
BD.ILOCZYNApplication.WorksheetFunction.DProduct
BD.MAXApplication.WorksheetFunction.DMax
BD.MINApplication.WorksheetFunction.DMin
BD.ODCH.STANDARDApplication.WorksheetFunction.DStDev
BD.ODCH.STANDARD.POPULApplication.WorksheetFunction.DStDevP
BD.POLEApplication.WorksheetFunction.DGet
BD.SUMAApplication.WorksheetFunction.DSum
BD.ŚREDNIAApplication.WorksheetFunction.DAverage
BD.WARIANCJAApplication.WorksheetFunction.DVar
BD.WARIANCJA.POPULApplication.WorksheetFunction.DVarP
BRAKbrak
COSCos
COSHApplication.WorksheetFunction.Cosh
CZASTimeSerial
CZAS.WARTOŚĆCDate
CZĘSTOŚĆApplication.WorksheetFunction.Frequency
CZY.ADRbrak
CZY.BŁApplication.WorksheetFunction.IsErr
CZY.BŁĄDApplication.WorksheetFunction.IsError
CZY.BRAKApplication.WorksheetFunction.IsNA
CZY.LICZBAApplication.WorksheetFunction.IsNumber
CZY.LOGICZNAApplication.WorksheetFunction.IsLogical
CZY.NIE.TEKSTApplication.WorksheetFunction.IsNonText
CZY.PUSTAIsEmpty
CZY.TEKSTApplication.WorksheetFunction.IsText
DATADateSerial
DATA.WARTOŚĆCDate
DBApplication.WorksheetFunction.Db
DDBApplication.WorksheetFunction.Ddb
Len
DNI.360Application.WorksheetFunction.Days360
DZIEŃDay
DZIEŃ.TYGApplication.WorksheetFunction.Weekday
DZIŚDate
EXPExp
FRAGMENT.TEKSTUMid
FVApplication.WorksheetFunction.Fv
GODZINAHour
HIPERŁĄCZEbrak
ILE.LICZBApplication.WorksheetFunction.Count
ILE.NIEPUSTYCHApplication.WorksheetFunction.CountA
ILE.WIERSZYbrak
ILOCZYNApplication.WorksheetFunction.Product
IMPTApplication.WorksheetFunction.Ipmt
INDEKSApplication.WorksheetFunction.Index
INFObrak
IRRApplication.WorksheetFunction.Irr
ISPMTApplication.WorksheetFunction.Ispmt
JEŻELIIf
KODApplication.WorksheetFunction.Asc
KOMBINACJEApplication.WorksheetFunction.Combin
KOMÓRKAbrak
KOWARIANCJAApplication.WorksheetFunction.Covar
KURTOZAApplication.WorksheetFunction.Kurt
KWARTYLApplication.WorksheetFunction.Quartile
KWOTAApplication.WorksheetFunction.Dollar
Lbrak
LEWYLeft
LICZ.JEŻELIApplication.WorksheetFunction.CountIf
LICZ.PUSTEApplication.WorksheetFunction.CountBlank
LICZBA.CAŁKInt
LICZBA.KOLUMNbrak
LITERY.MAŁELCase
LITERY.WIELKIEUCase
LNApplication.WorksheetFunction.Ln
LOGApplication.WorksheetFunction.Log
LOG10Application.WorksheetFunction.Log10
LOSRnd
LUBApplication.WorksheetFunction.Or
MACIERZ.ILOCZYNApplication.WorksheetFunction.MMult
MACIERZ.ODWApplication.WorksheetFunction.Minverse
MAXApplication.WorksheetFunction.Max
MAX.Abrak
MAX.KApplication.WorksheetFunction.Large
MEDIANAApplication.WorksheetFunction.Median
MIESIĄCMonth
MINApplication.WorksheetFunction.Min
MIN.Abrak
MIN.KApplication.WorksheetFunction.Small
MINUTAMinute
MIRRApplication.WorksheetFunction.MIrr
MODMod
MODUŁ.LICZBYAbs
NACHYLENIEApplication.WorksheetFunction.Slope
NIENot
NORMALIZUJApplication.WorksheetFunction.Standardize
NPERApplication.WorksheetFunction.NPer
NPVApplication.WorksheetFunction.Npv
NR.BŁĘDUbrak
NR.KOLUMNYbrak
OBSZARYbrak
OCZYŚĆApplication.WorksheetFunction.Clean
ODCH.KWADRATOWEApplication.WorksheetFunction.DevSq
ODCH.STANDARD.POPULApplication.WorksheetFunction.StDevP
ODCH.STANDARD.POPUL.Abrak
ODCH.STANDARDOWEApplication.WorksheetFunction.StDev
ODCH.STANDARDOWE.Abrak
ODCH.ŚREDNIEApplication.WorksheetFunction.AveDev
ODCIĘTAApplication.WorksheetFunction.Intercept
ORAZApplication.WorksheetFunction.And
PEARSONApplication.WorksheetFunction.Pearson
PERCENTYLApplication.WorksheetFunction.Percentile
PERMUTACJEApplication.WorksheetFunction.Permut
PIApplication.WorksheetFunction.Pi
PIERWIASTEKSqr
PMTApplication.WorksheetFunction.Pmt
PODAJ.POZYCJĘApplication.WorksheetFunction.Match
PODSTAWApplication.WorksheetFunction.Substitute
PORÓWNAJbrak
POTĘGAApplication.WorksheetFunction.Power
POWTApplication.WorksheetFunction.Rept
POZYCJAApplication.WorksheetFunction.Rank
PPMTApplication.WorksheetFunction.Ppmt
PRAWDPDApplication.WorksheetFunction.Prob
PRAWYRight
PROCENT.POZYCJAApplication.WorksheetFunction.PercentRank
PRÓG.ROZKŁAD.DWUMApplication.WorksheetFunction.CritBinom
PRZESUNIĘCIEOffset
PVApplication.WorksheetFunction.Pv
R.KWADRATApplication.WorksheetFunction.RSq
RADIANYApplication.WorksheetFunction.Radians
RATEApplication.WorksheetFunction.Rate
REGBŁSTDApplication.WorksheetFunction.StEyx
REGEXPPApplication.WorksheetFunction.LogEst
REGEXPWApplication.WorksheetFunction.Growth
REGLINPApplication.WorksheetFunction.LinEst
REGLINWApplication.WorksheetFunction.Trend
REGLINXApplication.WorksheetFunction.Forecast
ROKYear
ROZKŁAD.BETAApplication.WorksheetFunction.BetaDist
ROZKŁAD.BETA.ODWApplication.WorksheetFunction.BetaInv
ROZKŁAD.CHIApplication.WorksheetFunction.ChiDist
ROZKŁAD.CHI.ODWApplication.WorksheetFunction.ChiInv
ROZKŁAD.DWUMApplication.WorksheetFunction.BinomDist
ROZKŁAD.DWUM.PRZECApplication.WorksheetFunction.NegBinomDist
ROZKŁAD.EXPApplication.WorksheetFunction.ExponDist
ROZKŁAD.FApplication.WorksheetFunction.FDist
ROZKŁAD.F.ODWApplication.WorksheetFunction.FInv
ROZKŁAD.FISHERApplication.WorksheetFunction.Fisher
ROZKŁAD.FISHER.ODWApplication.WorksheetFunction.FisherInv
ROZKŁAD.GAMMAApplication.WorksheetFunction.GammaDist
ROZKŁAD.GAMMA.ODWbrak
ROZKŁAD.HIPERGEOMApplication.WorksheetFunction.HypGeomDist
ROZKŁAD.LIN.GAMMAApplication.WorksheetFunction.GammaLn
ROZKŁAD.LOGApplication.WorksheetFunction.LogNormDist
ROZKŁAD.LOG.ODWApplication.WorksheetFunction.LogInv
ROZKŁAD.NORMALNYApplication.WorksheetFunction.NormDist
ROZKŁAD.NORMALNY.ODWApplication.WorksheetFunction.NormInv
ROZKŁAD.NORMALNY.SApplication.WorksheetFunction.NormSDist
ROZKŁAD.NORMALNY.S.ODWApplication.WorksheetFunction.NormSInv
ROZKŁAD.POISSONApplication.WorksheetFunction.Poisson
ROZKŁAD.TApplication.WorksheetFunction.TDist
ROZKŁAD.T.ODWApplication.WorksheetFunction.TInv
ROZKŁAD.WEIBULLApplication.WorksheetFunction.Weibull
RTDApplication.WorksheetFunction.RTD
RZYMSKIEApplication.WorksheetFunction.Roman
SEKUNDASecond
SILNIAApplication.WorksheetFunction.Fact
SINSin
SINHApplication.WorksheetFunction.Sinh
SKOŚNOŚĆApplication.WorksheetFunction.Skew
SLNApplication.WorksheetFunction.Sln
STOPNIEApplication.WorksheetFunction.Degrees
SUMAApplication.WorksheetFunction.Sum
SUMA.ILOCZYNÓWApplication.WorksheetFunction.SumProduct
SUMA.JEŻELIApplication.WorksheetFunction.SumIf
SUMA.KWADRATÓWApplication.WorksheetFunction.SumSq
SUMA.X2.M.Y2Application.WorksheetFunction.SumX2MY2
SUMA.X2.P.Y2Application.WorksheetFunction.SumX2PY2
SUMA.XMY.2Application.WorksheetFunction.SumXMY2
SUMY.POŚREDNIEApplication.WorksheetFunction.Subtotal
SYDApplication.WorksheetFunction.Syd
SZUKAJ.TEKSTApplication.WorksheetFunction.Search
ŚREDNIAApplication.WorksheetFunction.Average
ŚREDNIA.GEOMETRYCZNAApplication.WorksheetFunction.GeoMean
ŚREDNIA.HARMONICZNAApplication.WorksheetFunction.HarMean
ŚREDNIA.WEWNApplication.WorksheetFunction.TrimMean
Tbrak
TANTan
TANHApplication.WorksheetFunction.Tanh
TEKSTApplication.WorksheetFunction.Text
TERAZNow
TEST.CHIApplication.WorksheetFunction.ChiTest
TEST.FApplication.WorksheetFunction.FTest
TEST.TApplication.WorksheetFunction.TTest
TEST.ZApplication.WorksheetFunction.ZTest
TRANSPONUJApplication.WorksheetFunction.Transpose
TYPbrak
UFNOŚĆApplication.WorksheetFunction.Confidence
USUŃ.ZBĘDNE.ODSTĘPYApplication.WorksheetFunction.Trim
VDBApplication.WorksheetFunction.Vdb
WARIANCJAApplication.WorksheetFunction.Var
WARIANCJA.Abrak
WARIANCJA.POPULApplication.WorksheetFunction.VarP
WARIANCJA.POPUL.Abrak
WARTOŚĆCByte / CInteger / CLong / CSingle / CDouble
WEŹDANETABELIbrak
WIERSZbrak
WSP.KORELACJIApplication.WorksheetFunction.Correl
WYBIERZApplication.WorksheetFunction.Choose
WYST.NAJCZĘŚCIEJApplication.WorksheetFunction.Mode
WYSZUKAJApplication.WorksheetFunction.Lookup
WYSZUKAJ.PIONOWOApplication.WorksheetFunction.VLookup
WYSZUKAJ.POZIOMOApplication.WorksheetFunction.HLookup
WYZNACZNIK.MACIERZYApplication.WorksheetFunction.MDeterm
ZAOKRApplication.WorksheetFunction.Round
ZAOKR.DO.CAŁKInt
ZAOKR.DO.NPARZApplication.WorksheetFunction.Odd
ZAOKR.DO.PARZApplication.WorksheetFunction.Even
ZAOKR.DO.TEKSTApplication.WorksheetFunction.Fixed
ZAOKR.DÓŁApplication.WorksheetFunction.RoundDown
ZAOKR.GÓRAApplication.WorksheetFunction.RoundUp
ZAOKR.W.DÓŁApplication.WorksheetFunction.Floor
ZAOKR.W.GÓRĘApplication.WorksheetFunction.Ceiling
ZASTĄPApplication.WorksheetFunction.Replace
ZŁĄCZ.TEKSTY&
ZNAJDŹApplication.WorksheetFunction.Find
ZNAKChr
ZNAK.LICZBYSgn