
Excel VBA AND fonksiyonu nedir?
Örneğin, bir şirketin çalışanlarının 4 aylık bir kritere göre ikramiye almaya uygun olup olmadığını kontrol etmek istediğini varsayalım. Bu durumda, Excel VBA AND işlevi ayrıntıları kontrol edebilir ve girilen kriterlere göre TRUE veya FALSE döndürebilir. Aşağıda gösterildiği gibi, birden fazla koşulu aynı anda kontrol etmek için VBA AND işleviyle bir "If" ifadesi kullanın.
Bu kodu çalıştırdığınızda, tüm koşullar karşılandığı için TRUE olarak bir açılır mesaj döndürecektir. Kişinin bonus için geçerli olmak üzere o ay için hedef satışlardan daha fazla kazanıp kazanmadığını kontrol etmek için VBA AND işlevini kullanır.
Sözdizimi
AND fonksiyonunun kullanım sözdizimi aşağıda gösterildiği gibidir:
koşul 1 Ve koşul 2 Ve……. [koşul n]
Burada 'koşul 1' ve 'koşul 2' kontrol edilmesi gereken koşullardır.
VBA AND Fonksiyonu Nasıl Kullanılır?
VBA AND fonksiyonunu, Excel AND fonksiyonuna benzer şekilde, ilgili kodu VBA düzenleyicisini kullanarak yazarak kullanabilirsiniz . VBA AND fonksiyonunun VB Düzenleyicisi kullanılarak nasıl kullanılabileceğini açıklamak için aşağıdaki adımları kullanırız.
Adım 1: VBA düzenleyicisini kullanarak kod yazmak için araç çubuğundaki Geliştirici sekmesine tıklayın ve “Visual Basic“ seçeneğine tıklayın. Şimdi, VBA Düzenleyicisi açılır ve kişinin tercihlerine ve gerekli çıktıya göre yeni işlevler eklenir.

Adım 2: Üç sayıyı toplama örneğini ele alalım ve belirli koşullara göre bir çıktı yazdıralım. Bunun için Ekle sekmesine tıklayarak yeni bir modül ekleyelim > Modül'ü seçelim.

Adım 3: Üç sayının toplamını bulan add_num adında bir fonksiyon oluşturun.

Adım 4: Aşağıda gösterildiği gibi, üç sayının değerlerini ve sum_num değişkenini girerek toplamlarını bulun.

Adım 5: Toplamı kontrol etmek için koşulları girin ve bunları AND işlevini kullanarak bağlayın. Değerlendirmeye göre çıktıyı yazdırmak için If…Else koşulunu kullanın.

Kod:
Private Sub add_num()
a = 10
b = 15
c = 18
sum_num = a + b + c
If sum_num > 9 And sum_num < 100 Then
MsgBox “Two-digit sum.”
Else
MsgBox “Single-digit sum.”
End If
End Sub
Burada her iki koşul da sağlanıyorsa sonuç iki haneli, sağlanmıyorsa tek haneli olacaktır.
Adım 6: F5'e veya Çalıştır düğmesine basarak kodu çalıştırın. Rakamlar iki basamaklı bir toplama ulaştığından, aşağıdaki sonucu elde edersiniz.

Örnekler
VBA AND fonksiyonunu ve kullanımlarını anlamamıza yardımcı olacak birkaç örnek aşağıda verilmiştir.
Örnek 1
Bir girdinin cinsiyetini ve yaş grubunu bazı parametrelere göre belirleyen bir tabloyu ele alalım.

Yukarıdaki tabloda, Alt fonksiyonda tanımlanan “YaşGrubu1“, “YaşGrubu2“ ve “YaşGrubu3“ olmak üzere üç yaş grubu bulunmaktadır.

Adım 1: Kullanıcının yukarıdaki görüntüden girdileri nereye vereceğini biliyoruz. "Yaş" için "B2" hücresinde ve "Cinsiyet" için girdi "B1" hücresindedir.

Adım 2: Verilen girdinin “E” mi “K” mi olduğunu ve verilen yaş grubunun “YaşGrubu1” mi olduğunu kontrol etmek için bir “Eğer” ifadesi oluşturun.

Yukarıdaki kod girilen Cinsiyetin “F”, “M” olup olmadığını veya cinsiyet girilmediğini ve yaş grubunun AgeGroup1 olup olmadığını kontrol eder. Ardından, “MsgBox” fonksiyonu kelimeleri bir açılır kutuya yazdırır.
Adım 3: Bu faktörlere dayanarak, AND işlevi ve kullanımı kullanılarak basit bir VBA kodu oluşturulur. Sub Declare_Gender() görevindeki kodda, bu koşullara dayalı bir Mesaj Kutusu çıktısı yazdırmak için, "If" ifadesinde AND işlevi kullanılır.

Adım 4: Tabloda verilen girdiler “F“ ve “AgeGroup1“ olup, burada Cinsiyet ve Yaş aralıkları tanımlanmıştır.

Adım 5: Bu kodu çalıştırmak için VBA editörünün üst kısmında yeşil üçgene benzeyen Çalıştır düğmesine basın.

Adım 6: Bu kodu çalıştırdıktan sonra aşağıdaki çıktıyı alırız.

Cevaplar “MsgBox” satırındaki yazı değiştirilerek özelleştirilebilir.
Adım 7: Girişleri değiştirerek farklı bir çıktı elde edersiniz. Örneğin, aşağıda verilen Cinsiyet'te bir girdi yoksa , aşağıdaki çıktıyı elde edersiniz.


Örnek 2
Yalnızca her iki çıktı da 1 ise “TRUE” değerini döndüren, aksi takdirde “FALSE” değerini döndüren AND Boolean mantık kapısı için doğruluk tablosunu hesaplamamız gereken bir tabloyu ele alalım.

A ve B girdilerdir ve S sonuç çıktısıdır. Excel VBA düzenleyicisindeki AND ifadesini kullanarak, iç içe geçmiş bir IF ile iç içe geçmiş bir FOR döngüsüyle hızlı bir şekilde yapılabilir.
Adım 1: Araç çubuğundaki “Geliştirici“ bölümüne gidin ve “Visual Basic“ seçeneğine tıklayın. Şimdi, kişinin tercihlerine ve gerekli çıktıya göre yeni işlevler eklemek için VBA Editörü açılır.

Adım 2: Bir alt prosedür oluşturun; aşağıda gösterildiği gibi Sub <procedure_name>() ile başlayın.

Adım 3: Tablonun satır boyutu için iç içe geçmiş bir FOR döngüsü oluşturun. Bir FOR döngüsü tablonun aralığını dolaşmak için kullanılır ve diğer FOR döngüsü tabloda bulunan her hücreyi yinelemek için kullanılır.

Burada, 'lastRow' tablonun sonuna kadar döngü yapmak için kullanılır ve 'i' aralıktaki her hücreyi yinelemek için kullanılır. Her iki değişkene de büyük sayıları depolayabildiği için "Long" veri türü atanır.
Adım 4: Sonra, 'lastRow' değişkeninin aralığı tanımlanır. Giriş sütunları “A“ ve “B“ olduğundan ve kontrol edilecek birden fazla sütun olduğundan, son aralığın değeri VBA Xlookup fonksiyonu (XlUp) kullanılarak tanımlanabilir.

Burada, "A" sütunu, XlUp ( XLOOKUP excel fonksiyonu ) yardımıyla satır sayısıyla aralığı hesaplar ve satır sonu aralığıyla sonlanır . Alt prosedür oluşturulduktan sonra, tablonun dinamik olması ve birden fazla satır değeri tutması için yapılır .
Adım 5: Şimdi 'lastRow' aralığındaki her hücreyi yinelemek için bir for döngüsü kullanın.

Burada, yukarıda gösterildiği gibi, "A" ve "B"deki her iki değerin de 0'dan büyük olup olmadığını kontrol etmek için 'i' 2'den sonuna kadar yinelenir; koşul sağlanıyorsa, "C" sütunundaki hücre "TRUE" olarak yazdırılır. Sağlanmıyorsa, "FALSE" olarak yazdırılır.
Kodun tamamı şu şekildedir.
Sub andFunction()
Dim lastRow As Long
Dim i As Long
lastRow = Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
If Range(“A” & i).Value > 0 And Range(“B” & i).Value > 0 Then
Range(“C” & i).Value = “TRUE”
Else
Range(“C” & i).Value = “FALSE”
End If
Next i
End Sub
Adım 6: VBA alt prosedürünü çalıştırmak için araç çubuğundaki VBA düzenleyicisinin üst kısmındaki yeşil oka tıklayın.

Ortaya çıkan çıktı şu şekildedir:

Örnek 3
Bu durumda, aynı sayfada verilen parametrelere göre bazı koşulları sağlayanlara kredi verildiğini göstermek için Kredi ve Borçlar hücresinin yeşil renkle boyanması gereken bir tabloyu ele alalım.

Verilen parametreler şu şekildedir:

Burada kredinin reddedilebilmesi için kredi tutarının 5500$'dan fazla, önceki borçların ise 2500$'dan fazla olması gerektiği görülmektedir.
Adım 1: Bunu çalıştırmak için, önce tabloya dönüştürmemiz gerekir; bu, tablodaki herhangi bir hücreye tıklayıp “Ctrl + T” tuşlarına basarak tabloya dönüştürülebilir. Bu, tablonun boyutunu soran bir açılır pencereyle sonuçlanacaktır.

Adım 2: Gördüğünüz gibi Excel tablonun tam boyutunu otomatik olarak alıyor, ardından “Tablomda başlıklar var” onay kutusunu tıklayabilirsiniz.
Tabloya dönüştürüldüğünde şu şekilde görünecektir:

Adım 3: Araç çubuğundaki “Geliştirici“ bölümüne gidin ve “Visual Basic“ seçeneğine tıklayın. Şimdi, kişinin tercihlerine ve gerekli çıktıya göre yeni işlevler eklemek için VBA Editörü açılır.

Adım 4: İlk olarak, onaylanmış hücreleri yeşil, diğerlerini kırmızı renkle vurgulayan yeni bir Alt prosedür tanımlayın. Bunu yapmak için, aşağıda gösterildiği gibi Sub <procedure_name>() ile başlayarak bir alt prosedür oluşturun.

Adım 5: Değerin 5500'den büyük ve 9000'den küçük olup olmadığını kontrol eden bir "If" ifadesi oluşturun. Ancak tablo içinde dinamik olarak çalışması gerektiğinden, bir FOR döngüsü kullanıyoruz.
Tablonun uzunluğunu bulmak için herhangi bir rastgele hücreye tıklayın ve “=,” yazın ve resimde gösterildiği gibi işaretli alana (sütun hücre adı ile sütun başlığı arasında) tıklayarak sütunun değer aralığını bulun.

Enter'a basıldığında #value hatası gösterilecektir .

Tek bir hücre tüm değerleri depolayamaz, sadece aralığına ihtiyacımız var, bu da yukarıdaki görselde D14 hücresinde gösterilmiştir.

Adım 6: Benzer şekilde, yukarıda gösterildiği gibi "Kredi" sütunu için aralığı şu şekilde bulun:

Gerekli aralıklar bulunduğuna göre, şimdi IF ifadesini oluşturmaya devam edelim .
Adım 7: Excel VBA düzenleyicisinde bir “For” döngüsü ile başlayın.

Önceki adımlardan elde edilen tablonun aralığı için döngüyü çalıştırmak amacıyla Range fonksiyonunu kullanırız.
Adım 8: Değerin 5500 ile 9000 arasında olup olmadığını kontrol eden bir " If " koşulu yazın. Koşul doğruysa hücreyi kırmızıya boyayın. Değilse hücreyi yeşile boyayın.

Koşuldan sonra “Next” kelimesini eklemek, döngüyü yürütmek için önemlidir. Örneğin, yukarıdaki kodda, “hücre” tüm hücreler arasında döngü yapan ve Excel AND işlevi koşulunu kontrol eden değişkendir.
Ayrıca Excel VBA'da arka plan rengini ayarlamak için kullanılabilecek çeşitli renklere sahip bir renk kütüphanesi vardır:

Adım 9: Benzer şekilde, “Mevcut Aidatlar” için bir for döngüsü yazın ve hücreleri uygun şekilde renklendirin. Aidatlar 2500'den fazlaysa hücreyi kırmızıya, değilse yeşile boyarız.

Burada, “c”, “Mevcut Borçlar” sütun aralığındaki tüm hücreler arasında döngü yapan ve koşulu kontrol eden değişkendir.
Kodun tamamı şu şekildedir:
Sub declare_approval()
Dim cell As Range
For Each cell In Range(“Table1[Loan (in USD)]”)
If (cell.Value > 5500 And cell.Value <= 9000) Then cell.Interior.Color = VBA.ColorConstants.vbRed Else: cell.Interior.Color = VBA.ColorConstants.vbGreen End If Next For Each c In Range(“Table1[Existing Dues]”) If (c.Value > 2500) Then
c.Interior.Color = VBA.ColorConstants.vbRed
Else: c.Interior.Color = VBA.ColorConstants.vbGreen
End If
Next
End Sub
Adım 10: Kodu çalıştırmak için VBA düzenleyici araç çubuğundaki yeşil oka tıklayın.

Sonuç çıktısı şudur:

Burada borcu 2500 dolardan fazla ve kredi tutarı 5500 ile 9000 dolar arasında olanların kredileri reddediliyor ve kırmızı renkle kodlanıyor, geri kalanların kredileri onaylanıyor ve yeşil renkle kodlanıyor.