Kurs Excel VBA - Tworzenie funkcji w Excel VBA - Funkcje użytkownika

Kurs Excel VBA – Funkcje Użytkownika

1. Wprowadzenie do funkcji użytkownika

Zarówno Excel jak i VBA oferują nam szereg użytecznych funkcji. Co jednak, jeśli chcielibyśmy samodzielnie stworzyć funkcję, z której będziemy korzystali w Excelu? Z pomocą przychodzi nam możliwość tworzenia tzw. funkcji użytkownika. Są to funkcje, których kod źródłowy piszemy sami. Możemy z nich korzystać zarówno w kodzie VBA jak i w Czytaj dalej

Podobnie jak w pozostałych językach SQL,  SQL Server prezentuje szeroki zbiór funkcji matematycznych. Poniżej Przykłady wraz z wykorzystaniem.

ABS() – Zwraca wartość bezwzględną.

Pi() – Wartość liczby PI ~3,14159265358979

SQUARE() – Kwadrat liczby.

POWER(arg1, arg2) – Potęgowanie. Argument 1 określa podstawę potęgi. Argument 2 to wykładnik potęgi.

SQRT() – Pierwiastek kwadratowy z podanej wartości liczbowej.

ROUND(liczba, arg 2) – Funkcja zaokrągla liczbę do miejsc po przecinku wprowadzonych w argumencie 2. Argument może przyjmować wartość 0 – uzyskamy w ten sposób liczbę całkowitą. Argument może także przyjąć wartości ujemne – zaokrągla w ten sposób liczbę przed przecinkiem.

SIGN() – Zwraca 3 wartości w zależności od znaku liczby:  -1 / 0 / 1

RAND() – Losuje liczbę FLOAT z przedziału (0, 1)

CEILING() – Zwraca liczbę całkowitą najbardziej zbliżona do argumentu. Zaokrągla do góry.

FLOOR() – Zwraca liczbę całkowitą najbardziej zbliżona do argumentu. Zaokrągla do dołu.

EXP() – Funkcja zwraca wartość wykładniczą. Dla przykładu EXP(1) zwróci nam liczbę Eulera ~2,71828182845905

select
ABS(-10) as RES1,
PI() as RES2,
SQUARE(10) as RES3,
POWER(2, 3) as RES4,
SQRT(100) as RES5,
ROUND(2222.5544, 2) as RES6,
SIGN(-123) as RES7,
RAND() as RES8,
CEILING($333.23456) as RES9,
FLOOR($333.23456) as RES10,
exp(1) as RES11
;

SIN(), COS(), TAN(), COT(),  ASIN(), ACOS(), ATAN(), ACOT() – Zestaw funkcji trygonometrycznych i cyklometrycznych.

LOG(), LOG10() – Funkcje wykładnicze.

DEGREES() – Zwraca wartość kąta w stopniach.

RADIANS() – Zwraca wartość kąta w radianach.

ATN2(x,y) – Zwraca wartość w radianach pomiędzy punktami na osiach x i y. ~~zmienić

select
SIN(0) AS RES1,
COS(0) AS RES2,
TAN(0) AS RES3,
COT(PI()/4) AS RES4,
POWER(4, LOG(2)) AS RES5,
LOG10(10) AS RES6,
DEGREES(PI()/2) AS RES7,
RADIANS(360) AS RES8,
ATN2(1,6) AS RES9;
go

Poniżej lista najczęściej wykorzystywanych funkcji znakowych w SQL Server. Wykorzystanie funkcji w kodzie SQL polega na wprowadzeniu jej najczęściej w klauzuli SELECT podczas obróbki danych.

LEN(tekst) – Funkcja zwraca liczbę znaków w podanym ciągu tekstowym.

USE [AdventureWorks2014];
go
SELECT len(name) as wynik_1,
len('jakiś tekst') as wynik_2
from HumanResources.Department;
go

LOWER(tekst) –  Funkcja zamienia wszystkie litery w ciągu znaków na małe litery.

SELECT
name,
lower(name) as wynik1,
lower('Dowolny ciąg tekstowy') as wynik2
from production.ScrapReason
;
go

SUBSTRING(tekst1, numer1, numer2)– Funkcja wycina z ciągu znaków string1 ciąg rozpoczynający się w pozycji numer1 o długości numer2. Poniżej przykład z wykorzystaniem bazy AdventureWorks2014.

SELECT
name,
substring(name,5,10) as wynik1,
substring('Dowolny ciąg tekstowy',10,8) as wynik2
from production.ScrapReason
;
go

UPPER(tekst) –  Funkcja zamienia wszystkie litery w ciągu znaków na wielkie litery.

SELECT
name,
upper(name) as wynik1,
upper('Dowolny ciąg tekstowy') as wynik2
from production.ScrapReason
;
go

REPLACE(tekst1, tekst2, tekst3) – Funkcja zamienia w ciągu tekstowym tekst1 znaki podane w argumencie tekst2 na znaki podane w argumencie tekst3. Zamienić możemy zarówno pojedynczy znak, jak i całe frazy.

USE [AdventureWorks2014];
go
SELECT name,
replace(name, 'c','a') as wynik1,
replace(name, ' ','_') as wynik2
from HumanResources.Department;
go

LTRIM(tekst) – Funkcja usuwa spacje z lewej strony ciągu tekstowego.

USE [AdventureWorks2014];
go
select ltrim('         Jakiś tekst        ') ;
go

RTRIM(tekst) – Funkcja usuwa spacje z prawej strony ciągu tekstowego.

USE [AdventureWorks2014];
go
select rtrim('       Jakiś tekst      ') ;
go

LEFT(tekst) – Funkcja zwraca wybraną liczbę znaków z ciągu tekstowego zaczynając od lewej strony.

USE [AdventureWorks2014];
go
SELECT left(firstname,1) as wynik1
,left(firstname,2) as wynik2
from person.person;
go

RIGHT(tekst)– Funkcja zwraca wybraną liczbę znaków z ciągu tekstowego zaczynając od lewej strony.

USE [AdventureWorks2014];
go
SELECT right(firstname,1) as wynik1
,right(firstname,2) as wynik2
from person.person;
go

CHARINDEX(tekst1, tekst2, numer1) –  Funkcja wyszukuje ciągu znaków tekst1 w ciągu znaków tekst2 zaczynając od kolejnego znaku podanego w argumencie numer1. Argument number1 jest opcjonalny. Wynikiem funkcji jest kolejna pozycja, którą zajmuje szukana fraza w ciągu string2. Poniżej przykład wykorzystania funkcji pokazany na bazie AdventureWorks2014.

SELECT
name,
charindex('too', name) as wynik1,
charindex('too', name, 14) as wynik2
from production.ScrapReason
;
go

Poniżej pozostałe funkcje znakowe. Ich znajomość na początku Twojej pracy w SQL Server nie jest konieczna. Warto z nich korzystać, gdy mamy do zrobienia niestandardowe zadania wymagające wykorzystania tych funkcji.

ASCII() – Funkcja zamienia podany w argumencie znak na kolejny numer znaku w kodzie ASCII.

SELECT ASCII('a') AS KOD_ASCII_LITERY_a,
ascii('A') AS KOD_ASCII_LITERY_A,
ASCII(6) AS KOD_ASCII_LICZBY_6;
go

CHAR() – Odwrotność funkcji ASCII. Zamienia kolejny znak numeryczny na znak w kodzie ASCII.

SELECT char(12) AS ZNAK_ASCII_12,
char(100) AS ZNAK_ASCII_100,
char(6) AS ZNAK_ASCII_6;
go

SPACE(numer) – Funkcja zwraca określoną w argumencie liczbę spacji

USE [AdventureWorks2014];
go
select space(456) from person.Person;
go

STUFF(tekst1, start, długość, tekst2) – Funkcja zamienia znaki z ciągu tekst1 na znaki zawarte w ciągu tekst2. Zamiana zaczyna się od pozycji start określającej pozycję pierwszego znaku, który będzie zamieniony. Następnie wycina z ciągu tekst1 liczbę znaków określoną w argumencie długość i wprowadza w te miejsce ciąg znaków tekst2. Poniżej przykład zastosowania tej funkcji.

use adventureworks2014;
go
select
AddressLine1,
STUFF(AddressLine1, 2 ,10, 'DD')
from person.Address;
go

UNICODE() – Funkcja zamienia podany w argumencie na kolejny numer znaku w kodzie UNICODE.

SELECT UNICODE('a') AS KOD_ASCII_LITERY_a,
UNICODE('A') AS KOD_ASCII_LITERY_A,
UNICODE(6) AS KOD_ASCII_LICZBY_6;
go

CONCAT(tekst1, tekst2, …,tekst_n) – Funkcja łączy ze sobą podane ciągi znaków. Działa identycznie jak operator „+”.

SELECT
concat('ciąg znaków1','ciąg znaków2') as wynik1,
('ciąg znaków1' + 'ciąg znaków2') as wynik1
;
go

REVERSE(tekst) – Funkcja zwraca podany ciąg znaków w postaci odwrotnej, a więc od końca.

SELECT
reverse('ABCDEFGH') as wynik1,
reverse('acnok do ynatyzc wókanz gaic') as wynik2
;
go

 

DIFFERENCE

SOUNDEX
STR
REPLICATE

FORMAT