Bir sayının karekökünü standart (2) ve diğer derecelerden (3, 5, 8 vs.) bulmaya yarayan alternatif bir kullanıcı tanımlı fonksiyon (ktf) kodudur.
Option Explicit
'--------------------------------------------------
'Karekök Fonksiyonu (Kök Üssü = 2)
'--------------------------------------------------
Function Karekok(sayi As Single)
If (IsNumeric(sayi) And sayi >= 0) Then
sayi = Math.Sqr(sayi)
Karekok = sayi
Else
Karekok = CVErr(xlErrValue)
End If
End Function
'--------------------------------------------------
'Karekök Fonksiyonu (Kök üssü değişebiliyor.)
'--------------------------------------------------
Function KarekokDereceli(sayi As Single, kok_ussu As Byte)
If (IsNumeric(sayi) And sayi >= 0) Then
sayi = sayi ^ (1 / kok_ussu)
KarekokDereceli = sayi
Else
KarekokDereceli = CVErr(xlErrValue)
End If
End Function
Option Explicit
Function Karekok(sayi As Single)
'--------------------------------------------------
'Karekökü alınacak sayının
'uygunluk kontrolü yapılıyor.
'--------------------------------------------------
If (IsNumeric(sayi) And sayi >= 0) Then
'--------------------------------------------------
'VBA'da bulunan standart karekök fonksiyonuyla
'karekök alınıyor. Buradaki asıl amaç şu:
'Zaten varolan bir karekök fonksiyonunu uzatarak
'kendimizi kandırmak değil, fonksiyonu kendi
'işimize yarar haline getirecek şekilde yeniden
'yapılandırmaktır.
'--------------------------------------------------
sayi = Math.Sqr(sayi)
'--------------------------------------------------
'Formül sonucunu yazdır.
'--------------------------------------------------
Karekok = sayi
Else
'--------------------------------------------------
'Eğer sayı istenilen biçimde değilse bunu
'excel hataları aracılığıyla belirt.
'--------------------------------------------------
Karekok = CVErr(xlErrValue)
End If
End Function
Function KarekokDereceli(sayi As Single, kok_ussu As Byte)
'--------------------------------------------------
'Karekökü alınacak sayının
'uygunluk kontrolü yapılıyor.
'--------------------------------------------------
If (IsNumeric(sayi) And sayi >= 0) Then
'--------------------------------------------------
'Karekökü dereceli olarak almak için
'üs alma işlemini kullandık, verilen kök
'derecesini de 1/sayı şekline çevirerek
'karekök almış gibi olduk.
'--------------------------------------------------
sayi = sayi ^ (1 / kok_ussu)
'--------------------------------------------------
'Formül sonucunu yazdır.
'--------------------------------------------------
KarekokDereceli = sayi
Else
'--------------------------------------------------
'Eğer sayı istenilen biçimde değilse bunu
'excel hataları aracılığıyla belirt.
'--------------------------------------------------
KarekokDereceli = CVErr(xlErrValue)
End If
End Function