30.09.2018 tarihinde Excel bölümüne Dış Verilerle çalışmak sayfası eklenmiştir

04.08.2018 tarihinde VBA bölümüne ObjelerDünyası sayfası eklenmiştir

25.07.2018 tarihinde VBA bölümüne Outlook programlama sayfası eklenmiştir

13.07.2018 tarihinde VBA bölümüne Formlar-Kontroller sayfası eklenmiştir

25.05.2018 Hosting şirketi dğeiştirmekten kaynaklı bir hata nedeniyle Excelent add-ini indirirken hata alınmaktaydı. Bu hata düzeltilmiştir. İki ayrı download alternatifi sunulmuştur. Kurumunuzun BT politikalarının veya şahsi PC’nizdeki güvenlik ayarlarının izin vermesi durumunda yöntemlerden biriyle kurulum yapabilmelisiniz. Bi sorun olursa bana iletebilirseniz sevinirim.

ExcelFormulas Menüsü(Fonksiyonlar)6

Istatistiki ve Matematiksel Fonksiyonlar

Excelin müthiş bir matematiksel fonksiyon kütüphanesi bulunmaktadır. Tabi biz burada hepsine girmeyeceğiz, ancak MIS ağırlıklı çalışan kişilerin hedef kitlem olduğunu düşünerek, bize lazım olabilecek fonksiyonları inceleyemeye dahil edeceğiz. Bu şu demek, mutlak değer formülü olan ABS tam anlamıyla matematiksel bir fonksiyon olmakla birlikte zaman zaman biz MIS tarzı işlerde çalışanların da gereksinim duyduğu bir fonksiyon olmaktadır, o yüzden onu burada ele alacağız. Ancak sinüs, cosinüs gibi trigonometrik fonksiyonlar v.s kapsamımız dışında olacaktır.

Bu kategoriyi anlatırken kendi içimde mantıksal alt gruplamalar da yaptım, alt bölümleri de buna göre oluşturdum.

Bu sayfadaki örneklerin yer aldığı koşullu ve istatistiki fonksiyon dosyalarını buradan indirebilirsiniz.

Küsurat, Tamsayı ve Yuvarlama formüller

Bu kısımda küsuratı olan sayılar nasıl ele alınır, ayrıca diğer yuvarlama işlemleri nasıl yapılır, bunlara bakacağız.

FonksyionSyntaxNe işe yarar
TRUNCTRUNC(sayı;[basamak])Sayıyı istenen miktardaki küsurattan kurtarır, yuvarlama yoktur. Basamak belirtilmezse küsüuratı tamamen kaldırır.
INTINT(sayı)Sayıyı en yakın aşağı yönlü tam sayıya yuvarlar. Pozitif sayılarda trunc ile aynı görevde.
ROUNDROUND(sayı;basamak)Belirtilen basamak kadar yuvarlama yapar. Yuvarlamanın yönü yuvarlanacak kısmın 5'in ne kadar altında/üstünde olmasına göre değişir. Basamak parametresi 0 da olabilir, + ve - de.
ROUNDDOWNROUNDDOWN(sayı;basamak)Belirtilen basamak kadar aşağı yuvarlama yapar. Basamak parametresi 0 da olabilir, + ve - de.
ROUNDUPROUNDUP(sayı;basamak)Belirtilen basamak kadar yukarı yuvarlama yapar. Basamak parametresi 0 da olabilir, + ve - de.
MROUNDMROUND (SAYI;ÇARPAN)Sayıyı, belirtilen çarpanın en yakın katına yuvarlar. Sadece pozitif sayılarda çalışır.
CEILINGCEILING(sayı,[hassasiyet])Sayıyı, belirtilen çarpanın en yakın YUKARI katına yuvarlar
CEILING.MATHCEILING.MATH(sayı,[hassasiyet],[mode])Sayıyı, belirtilen çarpanın en yakın YUKARI katına yuvarlar. Excel 2013le geldi. Mode parametresi, negatif sayılar için
FLOORFLOOR(sayı,[hassasiyet])Sayıyı, belirtilen çarpanın en yakın AŞAĞI katına yuvarlar
FLOOR.MATHFLOOR.MATH(sayı,[hassasiyet],[mode])Sayıyı, belirtilen çarpanın en yakın AŞAĞI katına yuvarlar. Excel 2013le geldi. Mode parametresi, negatif sayılar için
EVENEVEN(sayı)Pozitif sayıları, kendinden en büyük çift sayıya yuvarlar. Negatifleri aşağıya
ODDODD(sayı)Pozitif sayıları, kendinden en büyük tek sayıya yuvarlar. Negatifleri aşağıya

Aşağıdaki çeşitli örnekleri inceleyelim

Örnek dosyayı buradan indirebilrsiniz.

Burada özellikle MROUND ve CEILING farkına değinmekte fayda var. MROUND, en yakın kata(yukarı veya aşağıda) yuvarlarken, CEILING yukarı yönlü yuvarlar. Bu durumda 67.256 sayısının 5.000'in katı şeklinde yuvarlarken MROUND en yakın kat olarak 65.000'e veya 70.000'e yuvarlama konusunda seçim yapmalıdır. 65.000, 2.256 birim uzaklıkta iken 70.000, 2.754 birim uzaklıktadır, o yüzden 65.000e yuvarlar. CEILING ise hep yukar yuvarladığı için 70.000e yuvarlar.

Grup(Aggregate) Fonksiyonları

Toplamlar

SUM: Belirli bir alandaki sayıları toplar. Başlangıç noktası ile bitiş noktası arasında ":" işareti olur. Birbirine komşu olmayan alanları toplamak için aralara ";" konur. Parametre olarak sabit değer de girilebilir.

=SUM(A1:A5)
=SUM(J4:J10;K4:K6;10) //komşu olmayan ve sabit parametre

Filtrelenmiş alanlarda SUM formülünü yazarsanız aradaki gizlenmiş değerler de sonuca dahil olur. Sadece filtreli grubun toplamını almak için SUBTOTAL fonksiyonunu kullanmanız gerekir.

Yoksa aşağıdaki gibi sorun yaşarsınız. 486.satırın formülünde şu yazmaktadır.

=SUM(D277:D346)

Gerçi bazı şanslı durumlarda filtreli alan sıralı olabilir, o yüzden formülü yazdığınızda ilgili alanda arada filtrelenmiş satır bulunmaz. O  zaman şansınız yaver gidebilr.

Formülümüz şudur:

=SUM(D11:D16)

Siz siz olunuz, işinizi şansa bırakmayın, filtreli alanlarda her zaman SUBTOTAL kullanmaya çlışın.

Adetler

Aşağıdaki hücre grubunda çeşitli sayma işlemleri yapalım.

COUNT: Bir alandaki sayısal değer içeren hücreleri sayar.

COUNTA: Bir alandaki dolu hücreleri sayar.

COUNTBLANK: Bir aladaki boş hücreleri sayar.

Bir alandaki toplam hücreyi saydıran bir fonksiyon olmamakla birlikte, aşağıdaki formülle dolaylı yoldan saydırabiliriz. Satır ve sütundan oluşan bir karenin alanını hesaplıyoruz aslında.

=COLUMNS(J13:M15)*ROWS(J13:M15)

Diğer

PRODUCT: Belirli bir alandaki değerleri birbiryle çarpar. 10 parametreden oluşan bir katsayıyı tek tek çarpmak yerine bunu kullanmak pratiktir.

=A2*B2*C2*D2*E2*F2*G2*H2*I2*J2
//bunun yerine
=PRODUCT(A2:J2)

Bunun SUM ile birleşmiş hali olan SUMPRODUCT'a buradan ulaşabilirsniz.

SUBTOTAL:Filtrelenemiş listelerde sadece filtreli verinin toplamını(veya diğer gruplanmış fonksiyon sonucnu) verir. Evet, yanlış okumadınız, fonksiyonun adı her ne kadar SUBTOTAL olsa da alt toplam almaktan başka işler de yapar. Filtreli gurubn ortalamasını, maksimumunu v.s de alır. Zaten aşağıdaki resimde göründüğü gibi "(" karakterine basınca hemen parametre listesi ortaya çıkar. Mesela 1, ilgniç bir şekilde Toplam aldırmaya değil, ortalamayı veriyor. Toplam için 9 seçeneği seçilmelidir.

Bu arada filtrelenmiş alanların hemen altındayken menüden Σ(Toplam) işaretine basılınca otomatikman SUBTOTAL(9;....) şeklinde bir formül oluşur.

Yukarıdaki gibi bir listede sık sık bölge ve ürün  değiştirerek diptoplamın ne olacığı görülmek istenirse iki tane Slicer konarak bu iş halledilir.

NOT:Bu formül, Data Menüsündeki SUBTOTAL aracında da kulanılan formül olup, oradaki kullanımına buradan ulaşabilirsinz.

AVERAGE:Belirli bir alandaki hücre grubunun ortalamasını verir. Yanlız dikkat edilmesi gereken bir nokta var. Bu fonksiyon, boş değerleri dikkate almaz. 10 hücre varsa ve 9u doluysa toplamı 9a bölererk ortalama hesaplar,10'a değil.

Mesela, satışçıların 12 aylık ortalama satış rakamını alırken bazı satışçlar bazı aylar hiç satış yapmamışsa veri kaynağında burası boş da gelebilir 0 da. Boş gelme durumu daha çok tabular formdaki bir listenin pivot table yapılması sırasında oluşacaktır(Eğer ki özellikle "boş hücreler 0 görünsün" işaretlemesi yapılmadıysa)

Yukarıdaki örnekte 0 yerine boş gelirse hatalı bir ortalama hesaplanabilir, zira onların 0 olarak işleme girmesi gereklidir. Ama bazı durumlarda gerçekten boş hücrelerin ortalama hesabına dahil olmaması istenebilir. Mesela kişinin uzun süreli bir hastalığı olduysa o dönemlerin boş geçilerek ortalamaya dahil olmaması ve ortalamayı düşrüşmemesi gerekir.

Mesela aşağıdaki tabloda ilk satırın ortalaması 115 olurken ikincisi 138 olacaktır.

En küçük ve En büyükler

MIN: Bir alandaki değerlerin en küçüğünü verir. Sabit değerler de parametre oalrak girilebilir ve birbirlerinden ";" ile ayrılır.

MAX: Bir alandaki değerlerin en büyüğünü verir. MIN'deki açıklamalar geçerli.

MIN ve MAX'ın söylemimize ters bir şekilde işlediğini bilmek önemlidir. Mesela bir hesabın sonucunda çıkan değer en az 100 olsun denirse, bunun için MIN değil MAX kullanılmalıdır. Mesela, A5*B5 formülünün sonucu 67 çıktıysa, bunu 100 yapmak için formülümüz şöyle olmalı

=MAX(A5*B5;100) //67 VE 100'den hangisi büyükse onu alır, yani 100ü

Keza bir hesabın sonucunun en çok 100 çıkması istniyorsa da MAX değil MIN kullanılmalıdır. A5*B5 180 çıkıyorsa formülümüz şöyle olmalıdır:

=MIN(A5*B5;100) //100

MIN ve MAX'ın bir diğer kullanımı da basit IF'li yapılara alternatiftir. Yani A1'in değeri 10'dan büyükse 10 olsun, yoksa A1 olsun demek istediğimiz birçok kişi şöyle yazar:

=IF(A1>10;10;A1) //A1 3'se sonuç 3, 15se 10
//bunun yerine daha kısa olan şu fomrülü deneyin
=MIN(A1;10)

SMALL(dizi;n): Bir grup sayı içinde en küçük n. sayıyı verir.

Sayılar, bir alandaki hücreler olabileceği gibi, bir dizi sonucu da olabilir.

=SMALL(A1:A10;3)
=SMALL({10;75;30;254;20};2) //20

LARGE(dizi;n):SMALL'daki açıklamalar aynen geçerli olup, en büyük n.elemanı döndürür.

SMALL ve LARGE'ın dizi formüllerinde kullanımı da oldukça yaygındır. O sayfayı da incelemenizi tavsiye ederim.

Uç değerler hariç ortalama

Aşağıdaki formülle, belli bir kümedeki en küçük/büyük 1 değer hariç ortalama alınır. Zira belli ki mart ayında tek seferlik yüksek bir satış olmuş, Ekimde de büyük çaplı bir sorun olduğu için satışlar düşük gitmiş. Ortalamayı hesaplarken bunları hariç tutmakta fayda var.

=(SUM(B2:B13)-MIN(B2:B13)-MAX(B2:B13))/10
//veya
=(SUM(B2:B13)-SMALL(B2:B13;1)-LARGE(B2:B13;1))/10

Bu formülde sabit bir değer olan 10'a böldük çünkü hem alttan hem üstten 1'er uç değeri çıkardık, geriye 10 ay kaldığını biliyoruz, ancak burası ay yerine sayısı sürekli değişebilen bir küme olsaydı 10 yerine (COUNT(B2:B13)-2) girebilirdik.

Peki, ya uç değer olarak ikişer tane yani toplamda 4 değeri hariç tutmak isteseydik nasıl yapardık? Formülü biraz uzatmamız gerekirdi:

=(SUM(B2:B13)-SMALL(B2:B13;1)-SMALL(B2:B13;2)-LARGE(B2:B13;1)-LARGE(B2:B13;2))/8

Peki ya 3,4 v.s uç değer hariç tutmak istesek? Tabiki yukarıdaki 12 adetlik kümede teknik olarak en fazla 5 uç değer hariç tutulabilir. Ama mesela 100 adetlik kümelerde uçlardan 5'er tane yani toplamda 10 tane değeri hariç tutup kalan 90 adedin ortalamasını almak istesek nasıl yapardık? Tek tek 5 tane SMALL 5 tane de LARGE formülü yazacak değiliz, değil mi? Bunun için dizi formüllerini kullanacağız. Onu ilgili bölümde göreceğiz. Ancak dizi formülünün kullanımı da karışık gelirse aşağıdaki gibi bir UDF de kullanabilirsiniz.

Uçhariçortalama ortalama

	Function uçhariçort(alan As Range, Uç As Variant)
	Dim aratoplam As Double
	Dim enbüyükler As Double
	Dim enküçükler As Double
	 
	For i = 1 To Uç
	    enbüyükler = enbüyükler + WorksheetFunction.Large(alan, i)
	Next i
	     
	For i = 1 To Uç
	    enküçkler = enküçkler + WorksheetFunction.Small(alan, i)
	Next i
	      
	aratoplam = WorksheetFunction.Sum(alan) - enbüyükler - enküçkler
	uçhariçort = aratoplam / (alan.Count - Uç * 2)
	 
	End Function	
		

Koşullu Fonksiyonlar

Bu bölümde bir veye birden çok koşul olması durumunda elimizdeki SUM, COUNT gibi formüllerin koşullu türevlerini kullanmayı öğreneceğiz.

Türevi olan fonksiyonlar sözkonusu olduğunda bazen SUM'da olduğu gibi hem tek koşul(SUMIF) hem çok koşul için(SUMIFS) türev fonksiyon görebilirken, bazılarında ise sadece tek koşul türevi(AVERAGEIF gibi) görülebilmektedir.(2016 versiyonunda AVERAGEIFS eklenmiştir.) Bununla birlikte bazılarının(MAX) ise tek koşullu biçimi(MAXIF) atlanarak doğrudan çok koşullu(MAXIFS) versiyonları sunulmuştur.

Bazılarında ise an itibarıyle türev fonksiyon hiç bulunmamaktadır. RANK için ne RANKIF ne de RANKIFS mevcuttur. Bunlar için alternatif yöntemleri deneyeceğiz.

Şimdi tek bir SUMIF ve SUMIFS örneğini burada inceleyelim. Diğerleri ise (COUNTIF,COUNTIFS,MINIFS,MAXIFS,AVERAGEIF,AVERAGEIFS) bu ikisinin benzer kullanımına sahip olacak, onları bu dosyayı indirip inceleyebilirsiniz.

Tek koşullu foksiyonların genel syntaxı şöyle:XXXIF(arama alanı,aranan,hesaplanacak kolon)

Çok koşullularda ise en başta hesaplanacak kolon olur, sonrasında ise "arama kolonu-aranan değer" çiftleri girilir. XXXIFS(hesaplanacak kolon,arama alanı1,aranan1,arama alanı2,aranan2,.....)

COUNTIF ve COUNTIFS'te hesaplama kolonu olmadığı için onları bu genellemeden ayırabiliriz. Onun dışındaki kullanımları aynıdır, sadece hesaplama kolonu seçilmez.

Kolon parametreleri tüm kolon(A:A), belli bir alan(A2:A100), bir table kolonu(Ör:Table1[Bölge]) veya bir Name(Ör:Bölgeler) olabilir.

=SUMIF(Table1[Bölge];G3;Table1[Aylık Gerç])
=SUMIFS(D:D;A:A;F3;C:C;G3)

Yukarıda belirttiğim gibi diğer koşulu fonksiyonları indirdiğiniz dosyadan inceleyebilrisiniz. Excel 2016da gelen fonksiyonları, daha eski sürüm Excel'i olanların kullanabilmesi için alternatif çözüm olarak dizi formüllerini önereceğiz. Onlara buradan bakabilirsiniz.

Bunlar için ayrıca UDF de yazılabilir. Aşağıdaki özelif isimli UDF'imi görebilirsiniz.

Özel if

Function özelif(İşlem As String, BakılacakAlan As Range, kriter As Variant, İşlemAlan As Range)
'işlem yerine, MAX, MIN, MEDIAN gibi aggreagete fonksiyonları yazılır
On Error GoTo hata
Dim aynıwb As Boolean, aynıws As Boolean
Dim strx As String
 
aynıwb = IIf(BakılacakAlan.Parent.Parent.Name = ActiveWorkbook.Name, True, False)
aynıws = IIf(BakılacakAlan.Parent.Name = ActiveSheet.Name, True, False)
 
 
If aynıwb Then
    If aynıws Then
        If IsNumeric(kriter) Then
            strx = İşlem & "(IF(" & BakılacakAlan.Address & "=" & kriter & "," & İşlemAlan.Address & "))"
        Else
            strx = İşlem & "(IF(" & BakılacakAlan.Address & "=""" & kriter & """," & İşlemAlan.Address & "))"
        End If
        'strx = "SumProduct(Max((" & BakılacakAlan.Address & "=""" & kriter & """)*(" & MaxAlan.Address & ")))"
    Else
        If IsNumeric(kriter) Then
            strx = İşlem & "(IF(" & "'" & BakılacakAlan.Parent.Name & "'!" & BakılacakAlan.Address & "=" & kriter & "," & "'" & BakılacakAlan.Parent.Name & "'!" & İşlemAlan.Address & "))"
        Else
            strx = İşlem & "(IF(" & "'" & BakılacakAlan.Parent.Name & "'!" & BakılacakAlan.Address & "=""" & kriter & """," & "'" & BakılacakAlan.Parent.Name & "'!" & İşlemAlan.Address & "))"
        End If
    End If
Else
    If IsNumeric(kriter) Then
        strx = İşlem & "(IF(" & "'[" & BakılacakAlan.Parent.Parent.Name & "]" & BakılacakAlan.Parent.Name & "'!" & BakılacakAlan.Address & "=" & kriter & "," & "'[" & BakılacakAlan.Parent.Parent.Name & "]" & BakılacakAlan.Parent.Name & "'!" & İşlemAlan.Address & "))"
    Else
        strx = İşlem & "(IF(" & "'[" & BakılacakAlan.Parent.Parent.Name & "]" & BakılacakAlan.Parent.Name & "'!" & BakılacakAlan.Address & "=""" & kriter & """," & "'[" & BakılacakAlan.Parent.Parent.Name & "]" & BakılacakAlan.Parent.Name & "'!" & İşlemAlan.Address & "))"
    End If
End If
 
özelif = Evaluate(strx)
Exit Function
 
hata:
özelif = "hata"
End Function	
	

Kullanımı da aşağıdaki gibi olup, MAXIF görevi görmektedir. A2:A10'da D1'deki değeri arayıp, eşleşen satırlar için B2:B10'daki MAX değeri döndürür. Excel 2007de SUMIF ve AVERAGEIF geldiği için sadece MAXIF ve MINIF amacıyla kullanılabilir.(Excel 2016'da MAXIFS ve MINIFS geldiği için gereksiz hale gelmiştir.)

=özelif("MAX";A2:A10;D1;B2:B10)

Kombine kriterler

Bazı kriterler sabit bir rakam(veya hücre) olmaktan ziyade < veya > işaretlerinden oluşur. Böyle durumlarda kriter tırnak içine alınır. Eğer işaretten sonraki değer bir hücreden gelecekse bu da & işaretiyle birleştirilir.

=SUMIFS(A:A;B:B;K2;C:C;">="&L2)
=COUNTIFS(A:A;K2;C:C;"<10")

COUNTIFS'in gruplu sıralamadaki(RANKIFS amaçlı) kullanımı

RANK

Öncelikle RANK fonsiyouna bakalım. RANK fonksiyonu, belirli bir gruptaki sayıların büyüklük sırasını verir. Syntax'ı şöyledir. RANK(sayı, hücre grubu;[sıralama yönü])

Sıralama yönü parametresi verilmez veya 0 girilirse büyükten küçüğe göre sırayı verir, yani en büyük rakamın sırası 1 olur. Bu parametre 1 girilirse en küçük rakamın sırası 1 olur.

NOT:Bu fonksiyon 2010'da yerini RANK.EQ'ya bırakmıştır ancak geriye dönük uyumluluk nedeniyle hala kullanılmaktadır. Gördüğünüz gibi hem RANK hem RANK.EQ aynı değere sahip sayılara aynı sırayı verir. 2010'la bir de RANK.AVG geldi, bu ise aynı değere sahiplere buçuklu bir sıra verir.

RANKIFS

İlginçtir ki, RANK'ın yukardaki diğer fonksiyonlar gibi koşullu versiyonu yoktur. Ancak biz alternatif yöntemlerle bu amaca hizmet eden formüller yazabiliyoruz. Şimdi yukarıdaki görüntüde E kolonuna şu formülü yazdığımızda bu bize, her bölgenin her üründeki şube sırasını verecektir.

=COUNTIFS(A:A;A2;C:C;C2;D:D;">"&D2)+1

Formülün mantığı şöyle: Başkent bölgesinde Ürün1'de kendisinin değerinden büyük kaç şube var. En büyük değer için bu 0 çıkacaktır, çünkü ondan daha büyük rakamı olan şube yoktur. Sonuca 1 ekleyerek nihai sırayı buluyoruz.

Bir diğer yöntem de aşağıdaki gibi bir UDF yazmak olacaktır.

Rankif için tıklayın

Function rankifs(ParamArray kriterler())
On Error GoTo hata
    Dim i As Integer
    Dim formül As String
    Dim str As String
   
    If (UBound(kriterler) + 1) Mod 2 <> 0 Then
        rankifs = "Eksik Parametre. Kriter ve alan sayıları çiftler halinde girilmelidir"
        Exit Function
    End If
   
    For i = LBound(kriterler) To UBound(kriterler)
        If i = UBound(kriterler) Then
            formül = formül & """>""" & "&" & kriterler(i)
        Else
            If i Mod 2 = 0 Then
                formül = formül & kriterler(i).Address & ","
            Else
                formül = formül & """" & kriterler(i) & """" & ","
            End If
            'formül = formül & IIf(i Mod 2 = 0, kriterler(i).Address, """" & kriterler(i) & """") & ";" 
        End If
    Next i
   
    str = "=COUNTIFS(" & formül & ")"
    rankifs = Evaluate(str) + 1
    Exit Function
   
hata:
rankifs = Err.Description
End Function	
	

Aynı kolon için çok kriter belirtmek

Koşullu kriterleri genelde tek bir kolonda tek bir değeri aramak için kullanırız ancak bazen birden çok değeri de aramamız gereken durumlar olacaktır. Bunun için bu konuda göstereceğimiz iki yöntem olacak, diğer yöntemleri ise dizi formüllleri sayfasında göreceğiz.

İlk yöntemimiz ilgili kriter kadar SUMIF'i yanyana yazıp toplamaktır. Bu yöntem çok sayıda kriter olması durumunda çok pratik olmayacaktır. İkinci yöntem ise SUM ve SUMIF'i beraber kullanmaktır. Kriterler süslü parantez içine yazılır.

=SUMIF(Table1[Bölge];"Başkent 1";Table1[Aylık Gerç])+SUMIF(Table1[Bölge];"Başkent 2";Table1[Aylık Gerç])
=SUM(SUMIF(Table1[Bölge];{"Başkent 1";"Başkent 2"};Table1[Aylık Gerç]))

İstatistiki Fonksiyonlar

Aşağıda bu fonksiyonların nerede ve ne zaman kullanabilecğeinize ait bilgiler bulunmakta olup, detay kullanımlarını bu dosyayı indirirek görebilirsiniz. Bunları ayrıca Data menüsündeki Data Analysis eklentisi ile de formülsüz şekilde elde edebilirsiniz.

MEDIAN:Bir grup sayının en ortasındaki değeri verir. Ortalamayı aşırı saptıran değerlerin olduğu bir kümede AVERAGE ile ortalama almak yerine MEDIAN da kullanılabilir. Ortalamayı saptıran değerlerin sayısı 1-2'den fazla değilse yukarıdaki gibi "uç değerler hariç ortalama"yı hesaplayan formül de kullanılabilir ama MEDIAN kullanımı daha basittir.

STDEV:Standart sapmayı verir. Bunun çeşitli türevleri var, eminim incelemeye değerdir ancak ben burada kendi dünyamda kullandığım örneği vereceğim. Ben, standart sapmanın kendisinden ziyade bunun ortalamaya bölümünü kullanıyorum. Bu oran bize bir gruptaki dalgalanma/sapma oranını verecektir.

Diyelim bir banka şubesindeki 4 satış temsilcisindeki müşteri sayıları sırayla 880, 770, 910 ve 840 olsun. Bunların müşteri sayılarında aşırı bi dalglanma olmadığını söylemek hemen mümkündür, bunun matematiksel ifadesi ise şöyledir.

=STDEV.P(B2:E2)/AVERAGE(B2:E2)

Tüm listeye bu formülü uyguladığımızda tek çırpıda sırıtanları hemen görebiliriz. Burada sabit bir sınır olmamakla birlikte duruma göre %20/%30 un üstündekilere sapma var gözüyle bakabilirsiniz. Bu tamamen sizin hassasiyet derecenize bağlı. Ör:"Ben her ay 3 şubede yeniden müşteri dağıtımı yaparım" derseniz bu örnekte Şube2, Şube6 ve belki bir de Şube12de işlem yapabilirsiniz.

MODE/FREQUENCY:MODE, bize belirli bir grupta en çok tekrar eden elemanı verirken, FREQUENCY belirli bir aralıktaki değerlerin ilgili kümede kaç kez geçtiğini söyler. MODE'la bulunan değerin kaç kez geçtiğini ise COUNTIF içine sarmalayarak bulabilirsiniz.

En çok tekrar eden değerin birden fazla olduğu durumlar için MODE.MULT fonksiyonu devreye sokulmuştur. MODE.SNGL ise MODE'un yerini almıştır, ancak geriye uyumluluk adına MODE da hala varlığını korumaktadır.

A2:A18 arasındaki değerlerin 15;15;17;19;20;22;23;23;24;25;25;25;25;26;26;26;29;32 olduğu bir örnekte formüllerimiz şöyledir

=MODE.SNGL(A2:A18)
=COUNTIF(A:A;MODE.SNGL(A:A)) //kaç kez geçiyor

Belirli aralıklardaki baremlerden oluşan bir grupta frekans değerlerini elde etmek için FREQUENCY'yi dizi formülü şeklinde uygularız. Bu formül bizi uzun bir COUNTIFS yazmaktan kurtarmaktadır.(Bütün bunları Data Analysis aracındaki histogram ile de yapabiliyoruz)

Aşağıdaki Frequency kolonundaki formül ile onun yanındaki kolonun en altındaki commentboxlı hücredeki formül aşağıdaki gibidir. Detaylara örnek dosyadan ulaşabilirsiniz.

{=FREQUENCY($A$2:$A$19;D8:D11)}
=COUNTIFS(A:A;"<="&D12;A:A;">="&C12)

FREQUENCY fonksiyonu dizi formülü şeklinde kullanıldığında bir değerin sonraki tekrarlarını 0 adet gösterir. Bunun detaylarına dizi formüllerinde değineceğiz.

NOT:MODE fonksiyonu sadece sayılar için çalışmaktadır. Metinsel ifadelerden hangisinin en çok ve kaç kez geçtiğini bulmak için yine dizi formüllerini kullanırız.(Bu dizi formülleri de artık çok olmaya başladı!!)

NORM.DIST:Bir kümedeki verilerin normal dağılım gösterip göstermediğni belirlemenin yollarından biri, dağılımın grafiğini çizmek ve bunu yorumlamaktır. Dağılım grafiğini çizmek için bunları çizime uygun hale getirmek ve sonra Scatter türündeki grafik ile çizmek gerekir.

Aşağıdaki gibi, şubelere verilen hedeflerin normal dağılıma uygun olup olmadığını görmek için C kolonunda şu formülü yazarak grafik değerlerini elde ettik. Gördüğünüügibi grafik değerelerinde kümenin ortalama ve standart sapma değerlerini de kullanıyoruz.

=NORM.DIST(B2;$E$2;$F$2;FALSE)

KURT/SKEW:Bir kümedeki verilerin normal dağılım gösterip göstermediğini belirlemenin bir diğer yolu da basıklık ve çarpıklık katsayılarına bakmaktır. Çarpıklık(skewness) normal dağılımda 0'dır. Sonuç negatifse dağılım sağa çarğık, pozitifse sola çarpıktır. Basıklık(kurtosis) normal dağlımda 0'dır; negatifse basık bir dağılım, pozitifse sivri bir dağılım sözkonusudur.

Dağılımın normal dağılımdan manidar düzeyde farklılaşmadığını söylemek için sonuçların iki fonkisyon için de -1 ve +1 arasında olması gerekmektedir. Bu değerleri yine Data Analysis eklentisinden topluca görebiliyoruz.

Yukardaki normal dağılım örneğindeki kümeye uyguladığımızda bu sonuçların da normal dağılıma uyduğunu görmüş bulunuyoruz.

=KURT(B2:B46) //-0,63
=SKEW(B2:B46) /-0,08

CORREL: İki veri kümesinin birbiriyle ilintili olup olmadığını gösterir. Örnek olarak, banka şubelerinin hedeflemesinde kullanılacak input listesine bakabiliriz. Mesela Ürün1 kalemine ait bir hedefleme yapacağız diyelim, bu kalemin inputu olarak elimizdeki diğer ürünlerden hangilerini kullanabiliriz sorusunun cevabını arıyoruz. Aşağıdaki görüleceği üzere Ürün1 ve Ürün2 oldukça korele yani ilintili. Yani bir şube ne kadar Ürün2 satıyorsa Ürün1'i satma oranı, diğer şubelerde de benzerlik gösteriyor. Ürün3 ve Ürün4'ün ise Ürün1 rakamlarıyla tüm şubelerde benzer bir orana sahip olmadığını yani birbirleriyle alakalı olmadığını görüyoruz. Dolayısıyla hedeflemeye input olarak sadce Ürün1 dahil edilmelidir.

=CORREL($B$2:$B$18;C2:C18)

TAHMİNLEMELER:

Excel bize oldukça fazla sayıda istatistiki tahminleme aracı sunuyor ama biz burada kısaca iki tanesine bakacağız. Yine tabiki ilgilenenler Data Analysis eklentisini inceleyebilirler. Gerçi bu linkte de çok yeterli bilgil bulamayabilirsiniz, ben bu sitenin kapsamında olmadığı için çok detayalara girmiyorum, arzu edenler başka kaynaklara da bakabilir.

FORECAST(yeni x, bilinen y'ler, bilinen x'ler): Geçmiş dönem satışlarını bidiğiniz durumlarda önümüzdeki dönem satışlarının ne olacağını tahmin etmek istediğiniz dönemlerde bu fonksiyonu kullanırız.

=FORECAST(E$1;$B$2:$B$18;$A$2:$A$18)

Bunun bir de sezonsallık etkisini dikkate aldığı versiyonu da var. O da şöyle olup detayı örnek dosyada inceleyebilirsiniz.

=FORECAST.ETS(E$1;$B$2:$B$18;$A$2:$A$18)

Bir de benzer sonucu veeren ve kullanımı daha kolay ola TREND fonsiyonu var. FORECAST'tan farkı, bunu dizi formülü olarak da kullanbilmeniz. Ancak bunun yerine FORECAST'ı sağa doğru kaydırarak da ayn sonucu elde edebilirsiniz. Başka farkları da var ancak bunun için istatistiki terminiolojiye daha aşina olmak gerekir.

=TREND(B2:B18;A2:A18;E1:Q1) //dizi formülü olarak girilmeli
//veya
=TREND($B$2:$B$18)

Diğer Fonksiyonlar

ABS(sayı):Sayıların mutlak değerini verir.

=ABS(-10) //10

Gelir ve giderin(negatif olarak gösterildiğini varsayalım) bir arada olduğu bir veri kümesinde sıralama yapmak istediğinizde negatifler en alta gitmesin diye önce bunların mutlak değerini almak isteyebilirsiniz.

Mutlak değer alıp sıralarsak durum şöyle olur.

Burdan da görülür ki dikkate alınacak en önemli kalem Faiz Gideri.(Tabi listenin daha kalabalık olduğunu düşünürsek ABS'nin etkisi daha anlaşılır olacaktır) 

ABS'nin bir diğer önemli kullanımı da başlangıç noktası negatif olan bir noktadan pozitif olan bitiş noktasına olan değişim oranıdır. Mesela bir şube geçen sene 100(A2) lira zarar ediyor ve bu sene 50(B2) lira kar ediyorsa geçen seneye göre olan değişimi şöyle hesaplanır.

=(B2-A2)/ABS(A2) //%150
//klasik formüle hesaplasaydık aşağıdaki gibi hatalı olurdu
=(B2-A2)/A2 //-%150

RAND(), RANDBETWEEN(ilk,son):RAND 0-1 arası rasgele sayı üretirken, RANDBETWEEN iki sayı arasında rasgele bir sayı üretir. RAND özellikle rasgele olasılık değeri üretmekte kulanılabilir. RANDBETWEEN'i ise genelde örnek sayı kümeleri oluşturmakta kullanıyorum. Mesela bu siteyi hazırlarken oluşturduğum örnek dosyalardaki rakamlarda hep bu fonksiyonun izi var.

=RAND() //Mesela 0,25734
=RANDBETWEEN(10;20) //Mesela 12

SIGN(sayı):Sayı pozitifse 1, negatifse -1, 0'sa 0 üretir. Bunun da dizi formüllerinde güzel bir kullanım örneği var. Yer yer belirttiğim gibi hiçbirşey için özellikle bu sitede anlatılan konular için "benim işime yaramaz" demeyin. Ben zaten buraya 20 yıl boyunca bir şekilde kullandığım şeyleri koydum. SIGN da bunlardan biri.

YORUMLAR