Merhaba Makro excel eğitimlerimize “if else” yapısıyla devam ediyoruz. If komutunu kısaca tanıttıktan sonra örneklerle pekiştirmeye çalışacağım.If komutu parametre olarak aldığı değer doğru ise kendisinden sonraki fonksiyon veya işlevleri gerçekleştirir. If komutunu kullanırken exceldeki “eğer” formülünü kullandığımız mantığı uygularız.  Formül yazarken aşağıdaki resimde ki gibi if Şart then aksiyon sonra başka şartımızı yoksa end if le bitirebiliriz.

Bir örnekle açıklayacak olursak;

Excelde A2 hücresine 5 ten büyük sayılar yazılmasını istiyoruz. Eğer girilen sayılar 5 ten küçük ise küçük, büyükse büyük yazsın. Sizde excel sayfasını açıp aynı anda uygulayabilirsiniz.

Excel sayfasında if şartını çalıştırmak istediğimiz A2 hücresinin adresini belirtmek için Worksheets(“sayfa1”).Range(“A2”) komutunu yazıyoruz. Aşağıdaki resimde makroyu çalıştırdığımızda A2 hücresine gidip, o değeri 5 ile karşılaştıracak ve değerine göre “büyük” veya “küçük” yazacak. Dilerseniz sizde farklı hücreler için uygulayabilirsiniz.

Şimdi ki örneğimizde ise sınıftaki öğrencilerin not ortalaması ve “devam” a  göre “kaldı” veya “geçti “  yazdıralım. Aşağıdaki tabloda öğrencilerin vize final notları ve devam durumları verilmiştir. Biz makro yazarak not ortalamalarını ve sonucu ekrana yazdıralım.

Not ortalaması vizenin %40’ı ve finalin %60’ı olduğunu göz önüne alarak F3 hücresi için yapacağımız işlem  ORT= Range(“D3” Value * 0.4 + Range(“E3”).Value * 0.6 olurdu. Ancak  diğer hücreler için de formülü tekrar tekrar yazmamak için for next döngüsü kullanacağız ve formülümüzde sütunları sabit tutarak satırları  şu şekilde döndüreceğiz. ORT = Range(“D” & a).Value * 0.4 + Range(“E” & a).Value * 0.6  Bu formülden sonra ortalamaları F sütununa yazdırmak için  Range(“F” & a).Value = ORT  şu formülü kullandık. Daha sonra if şartını kullanarak ortalaması 60 tan büyük ve devamlı olan öğrencilere geçti yazdırmak için, komutu şu şekilde kullanıyoruz.

If Range(“F” & a).Value > 60 And Range(“C” & a).Value = “Devamlı” Then

 Range(“G” & a).Value = “gecti”

 diğer durumlar için ise  else komutunu kullanarak kaldı yazdırmak için

 Else

  Range(“G” & a).Value = “kaldı”

 End If formülünü yazıp End if ile kapatıyoruz.

Tüm kodları yazdıktan sonra F5 tuşuna bastığımızda makromuz sırasıyla tüm kodları çalıştırıp aşağıdaki gibi tabloyu dolduracaktır.

Bir adım daha ileri gidelim;

Bu sefer ortalaması 60 üstü olan ancak devamsızlıktan kalacak olan öğrencilere “devamsız” yazsın. Bunun için Ufuk BAYRAK Ve Nursel ATAŞ’ın final notlarını yükselttim. Bu durumdaki öğrencilerin sonucuna devamsız yazdırabilmek için kodlarımıza birde ELSE İF komutunu eklememiz gerekecek.

ElseIf Range(“C” & a).Value = “Devamsız” And Range(“F” & a).Value > 60 Then

Range(“G” & a).Value = “Devamsız”

 bu formülü yazdığımızda artık kodumuz “C” sütuna bakacak devamsız sonra “F” sütunundaki ortalama 60 tan büyükse sonuca “kaldı” yazmak yerine devamsız yazacak.

Kodlarımızı aynı şekilde uyguladığınızda yukarıda belirttiğimiz sonuçlara ulaşacaksanız Ancak gözlerimi çok zorlamak istemiyorum derseniz renk ile ilgili kodlar da ekleyerek her bir sonucu farklı renklerle gösterebiliriz. Bunun için kullanacağımız kod Interior.ColorIndex’tir.

Örneğin Geçti sonucu için kırmızı renk istiyorsak şartımızın hemen altına

Range(“G” & a).Interior.ColorIndex = 3 “3 kırmızı rengini temsil eden no”

Devamsız için;

Range(“G” & a).Interior.ColorIndex = 5 “ 5 yeşil rengini temsil eden no”

Kaldı için;  

Range(“G” & a).Interior.ColorIndex = 4 “4  mavi rengini temsil eden no”

Tüm kodları girdikten sonra makromuzu çalıştırdığımızda tablomuz aşağıdaki gibi olacaktır.

Elimizden geldiğince if komutunu anlatmaya çalıştık. Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek üzere…