EXCEL VBA'DA IIF FONKSİYONU


 Excel VBA IIF İşlevi, kullanıcının bir değeri veya ifadeyi doğru ve yanlış koşullara göre değerlendirmesini ve sonuç olarak bunlardan birini almasını sağlar. VBA IIF, Excel IF İşlevi ve VBA İfadesi'ne benzer şekilde çalışsa da, VBA kodlama içerdiğinden istenen sonucu elde etmek için yürütülmesinde dikkatli olunması gerekir.


ÖNEMLİ NOKTALAR


  • Excel'deki VBA IIF, kullanıcının doğru veya yanlış olabilecek bir koşul için değeri veya ifadeyi değerlendirmesine ve bunlardan birini istenen sonuç olarak almasına olanak tanıyan mantıksal bir fonksiyondur.
  • VBA IIF'in sözdizimi 3 zorunlu argümandan oluşur: expr, true kısmı ve false kısmı.
  • Excel VBA IIF, mantıksal testler gerçekleştirmek için iç içe geçmiş IF ifadelerini veya koşullarını değerlendirmek için de kullanılabilir.
  • Excel'deki VBA IIF, sonuç olarak iki koşuldan birini döndürdüğünden ve bir satır kod içerdiğinden, doğru sonucu elde etmek için fonksiyonu çalıştırmak bazen zor olabilir.

VBA'da VBA IIF Koşulu Ne İşe Yarar?

VBA'daki IIF, çalışma sayfası işlevi IF'in bir kopyasıdır. Excel işlevi IF'de zaten ustalaştıysanız ; VBA IIF'i anlamak çok daha basittir. IF işlevine benzemesine rağmen, fark VBA IIF'in hem doğru hem de yanlış kısımları değerlendirmesi, ancak tek bir sonuç döndürmesidir.

Daha iyi anlamak için VBA IIF kullanarak basit bir örneğe bakalım.

Adım 1: Bir makroya isim vererek alt rutini başlatın.

VBA IIF - Adım 1

Adım 2: Değişkene bir tamsayı değeri atamak için Integer veri türünde bir değişken tanımlayın.

VBA IIF - Adım 2

Adım 3: İkinci değeri atamak için başka bir değişkeni Tamsayı olarak tanımlayın.

VBA IIF - Adım 3

Adım 4: Sonra, VBA IIF fonksiyonunu ekleyin, mantıksal ifadeyi aşağıda gösterildiği gibi uygulayın ve değerini “ Sonuç ” değişkenine atayın .

VBA IIF - Adım 4

Adım 5: V1 ve V2 değişkenlerine tam sayı değerleri atayın.

VBA IIF - Adım 5

Adım 6: Sonra, VBA IIF fonksiyonunu ekleyin, mantıksal ifadeyi aşağıda gösterildiği gibi uygulayın ve değerini “ Sonuç ” değişkenine atayın .

VBA IIF - Adım 6

Adım 7: Result değişkeninin çıktısını bir mesaj kutusunda gösterelim . Referansınız için tam kod aşağıdadır.

Sub IFF_Intro()
Dim V1 As Integer
Dim V2 As Integer
Dim result As String
V1 = 50
V2 = 35
Result = IIf(V1 > V2, "A", "B")
MsgBox result
End  Sub

Kodu çalıştırın ve aşağıdaki sonucu bir mesaj kutusunda görün.

VBA IIF - Adım 6 - Çıktı

IIF koşulunun döndürdüğü değer “A”dır.

Açıklama:

Mantıksal testi şu şekilde uyguladık:

V1 > V2

Değişken V1'in değerinin değişken V2'nin değerinden büyük olup olmadığını kontrol edecektir. VBA IIF, test sonucu TRUE ise "A" döndürecektir. Aksi takdirde "B" döndürecektir.

VBA IIF Sözdizimi

Şimdi VBA IIF fonksiyonunun söz dizimine bakalım.

    IIF (Expression, True Part, False Part)

    • İfade(Expression): Bu argümanda mantıksal koşulu test etmek için uygulayacağız.
    • True Kısmı: Yukarıdaki İfade true olarak değerlendirildiğinde bu değer döndürülür.
    • False Kısmı: İfade false olarak değerlendirildiğinde bu değer döndürülür.

    Örnekler

    Bu bölümde VBA IIF ifadesinin uygulanmasına ilişkin bazı pratik örnekler gösterilecektir.

    Örnek 1: VBA IIF

    VBA IIF işlevini kullanarak basit bir örneğe bakalım. İlk olarak, Excel'deki aşağıdaki verilere bir göz atın.

    VBA IIF - Örnek 1

    A2 hücresinde hedef değerimiz ve B2 hücresinde elde edilen değerimiz var. C2 hücresinde, aşağıdaki mantıksal testi kullanarak teşvik yüzdesini hesaplamalıyız.

    • B2 hücresinde ulaşılan değerin A2 hücresindeki hedef değerden büyük olması durumunda teşvik oranı %10, büyük olmaması durumunda ise %5 olmalıdır.

    VBA IIF ifadesini uygulamak için aşağıda listelenen adımları izleyin.

    Adım 1: Makroya isim vererek alt prosedürü başlatın.

    VBA IIF - Örnek 1 - Adım 1

    Adım 2: VBA IIF koşulunun sonucu C2 hücresine gidecektir; dolayısıyla C2 hücre referansını aşağıdaki gibi uygulayın.

    VBA IIF - Örnek 1 - Adım 2

    Adım 3: Eşittir = işaretinden sonra VBA IIF fonksiyonunu girin.

    VBA IIF - Örnek 1 - Adım 3

    Adım 4: VBA IIF işlevinin ilk argümanı ifadedir , yani değerlendirilecek mantıksal testtir. Bu durumda, B2 hücresindeki elde edilen değerin A2 hücresindeki hedef değerden büyük olup olmadığını değerlendirmemiz gerekir.

    Aşağıda gösterilen mantıksal testi uygulayın.

    VBA IIF - Örnek 1 - Adım 4

    Adım 5: Bir sonraki argüman doğru kısımdır, yani ifade argümanındaki uygulanan mantıksal test doğruysa, bu değerlendirilir. Uygulanan mantıksal test DOĞRU ise, teşvik %10'dur, C2 hücresine yazılır.

    Bu durumda uygulanan mantıksal test DOĞRU ise teşvik %10'da olup C2 hücresine yazılır.

    VBA IIF - Örnek 1 - Adım 5

    Adım 6: Verilen mantıksal test YANLIŞ ise teşvik yüzdesi %5'tir.

    VBA IIF - Örnek 1 - Adım 6

    Tamamlanmış kod aşağıda gösterildiği gibidir:

    Sub IFF_Ex1()
    Range(“C2”).Value = IIf(Range(“B2”).Value > Range(“A2”).Value, “10%”, “5%”)
    End Sub

    Adım 7: Visual Basic Editor penceresindeki yeşil üçgen Execute butonuna basarak veya F5 kısayol tuşuyla kodu çalıştırın.

    C2 hücresindeki teşvik yüzdesi için aşağıdaki sonucu elde ederiz.

    VBA IIF - Örnek 1 - Adım 7

    VBA IIF fonksiyonunun döndürdüğü teşvik yüzdesi %5'tir.

    Açıklama:

    Uygulanan mantıksal test şuydu: IIf(Range(“B2”).Value > Range(“A2”).Value)

    Excel verilerine bir göz atın.

    VBA IIF - Örnek 1 - Adım 7

    B2 hücresindeki değer 4.500$'dır, bu da A2 hücresindeki değerden küçüktür, bu nedenle mantıksal test başarısız olmuştur. Bu nedenle, VBA IIF işlevi yanlış ifade sonucunu, yani %5'i döndürmüştür.

    Örnek 2: IF ve IIF

    Programcılar arasında ilk karışıklık IF ve IIF arasındaki fark olacaktır. Her ikisi de mantıksal fonksiyonlardır ancak bunları test için uygulamak biraz farklıdır.

    İlk fark şudur: “IF mantıksal bir ifadedir, oysa VBA IIF mantıksal bir fonksiyondur.” Bir ifade yürütülen bir talimat gibidir, fonksiyon ise bir değer döndürebilen veya döndürmeyebilen bir alt rutindir.

    Daha iyi bir gösterim için Örnek 1'deki aynı verileri alalım.

    IF Durum Kodu:

    Sub IFF_Ex2()
    If Range(“B2”).Value > Range(“A2”).Value Then
    Range(“C2”).Value = “10%”
    Else
    Range(“C2”).Value = “5%”
    End If
    End Sub

    IIF Function Code:

    Sub IFF_Ex1()
    Range(“C2”).Value = IIf(Range(“B2”).Value > Range(“A2”).Value, “10%”, “5%”)
    End Sub

    Kod açısından, IF ifadesi uzun ve anlaşılması daha zor görünüyor. Ancak, VBA IIF işlevi tek satırlık bir koddur ve anlaşılması kolaydır. Önce IF ifadesi kodunu açıklayalım.

    Satır 1: If Range(“B2”).Value > Range(“A2”).Value Then

    Burada, B2 hücresindeki değerin A2 hücresindeki değerden büyük olup olmadığını kontrol etmek için mantıksal koşulu uyguladık, ardından " then " anahtar sözcüğünü kullandık.

    Satır 2: Range(“C2”).Value = “%10”

    1. satırda uygulanan mantıksal test doğruysa, “O zaman” C2 hücresine “%10” değerini ekler.

    Satır 3: Else

    1. satırdaki mantıksal test yanlış ise sonucu belirlemek için “Else” ifadesini kullanacağız.

    Satır 4: Range(“C2”).Value = “%5”

    Mantıksal test yanlış ise C2 hücresine %5 ekleyeceğiz.

    Satır 5: End If

    Burada, " End If " anahtar sözcüğünü kullanarak IF ifadesini kapatıyoruz . Özetle, IF birden fazla satır kod gerektirirken, IIF işlevi işlev görmek için formül benzeri argümanlar gerektirir. Ancak, her iki yöntemin sonucu aynıdır.

    Örnek 3: VBA İç İçe IIF Koşulu

    Şimdiye kadar IIF koşulunun işlevselliğini öğrendik. Ancak, IIF koşulu çok daha fazlasını yapabilir ve karmaşık mantıksal testler, yani iç içe geçmiş koşullar için uygulanabilir.

    Örneğin Excel'deki aşağıdaki verilere bakalım.

    VBA IIF - Örnek 3

    A2 hücresinde "Peter" adında bir çalışanımız ve B2 hücresinde mevcut unvanı "Yönetici" var. Son performans değerlendirme döngüsünde, C2 hücresinde belirtilen 3 derecesini aldı. Bir sonraki unvan seviyesini aşağıdaki koşullara göre derecelendirmeye göre hesaplamalıyız.

    • Notu 5 ve üzeri olanların unvanları “Bölüm Başkanı” olarak belirlenecektir.
    • Puanı 4 ve üzeri olanların unvanları “Yardımcı Başkan Yardımcısı” olacak.
    • Eğer 3 ve üzeri ise ünvanı “Üst Düzey Yönetici” olacaktır.
    • 3'ten az olması, onun mevcut unvanını değiştirmez.

    Yeni tanımını bulmak için dört farklı koşulu değerlendirmemiz gerekir. İlk olarak, VBA'da iç içe IIF uygulamak için aşağıdaki adımları izleyin.

    Adım 1: Burada sonuç D2 hücresine yazılır. O halde hücrenin adresine başvuralım ve IIF koşulunun döndürdüğü değeri ayarlamak için Value özelliğini kullanalım.

    VBA IIF - Örnek 3 - Adım 1

    Adım 2: Eşittir işaretinden sonra VBA IIF koşulunu girin.

    VBA IIF - Örnek 3 - Adım 2

    Adım 3: Test etmemiz gereken ilk koşul, C2 hücresindeki puanın 5 veya üzeri olup olmadığıdır. Aşağıda gösterildiği gibi Excel'de mantıksal testi uygulayın.

    VBA IIF - Örnek 3 - Adım 3

    Adım 4: Koşul doğru olarak değerlendirilirse, “Bölüm Başkanı” sonucunu almalıyız. Bu nedenle, bu sonucu IIF işlevinin TruePart'ının çift tırnak işareti içinde sağlayın.

    Örnek 3 - Adım 4

    Adım 5: Ardından uygulanan koşul yanlış ise bir sonraki koşulu, yani C2 hücresindeki puanın 4 veya üzeri olup olmadığını test etmeliyiz.

    Bu testi uygulamak için IIF işlevinin FalsePart bağımsız değişkenine başka bir IIF koşulu girin .

    Örnek 3 - Adım 5

    Adım 6: İç IIF koşulu için aşağıda gösterildiği gibi ikinci mantıksal testi uygulayın.

    Örnek 3 - Adım 6

    Adım 7: Eğer iç mantıksal test DOĞRU ise sonuç olarak “Yardımcı Başkan Yardımcısı” sonucunu elde etmeliyiz.

    Örnek 3 - Adım 7

    Adım 8: Eğer yanlışsa, bir sonraki mantıksal testi uygulamalıyız, yani C2 hücresindeki derecelendirmenin 3'ten büyük veya eşit olup olmadığını test etmeliyiz.

    Bunun için başka bir IIF koşulu girin ve mantıksal testi uygulayın. Eğer TRUE ise, sonuç olarak “Senior Manager” elde etmeliyiz.

    Örnek 3 - Adım 8

    Adım 9: İç içe geçmiş IIF koşullarındaki tüm uygulanan koşullar yanlışsa, değişiklik yapmadan aynı tanımı elde etmeliyiz. Bu nedenle, geçerli en içteki IIF koşulunun "Yanlış Kısmına" "Yönetici" girin.

    Örnek 3 - Adım 9

    Adım 10: IIF koşulunun iç içe görünümünü tamamlamak için, tüm IIF koşullarının (yani girilen üç IIF koşulunun) parantezlerini kapatın.

    IIF kodunun tamamı artık şu şekilde görünüyor.

    Sub IFF_Ex3()
    Range(“D2”).Value = IIf(Range(“C2”).Value >= 5, “Bölüm Başkanı”, IIf(Range(“C2”).Value >= 4, “Yardımcı Başkan Yardımcısı”, _
    IIf(Range(“C2”).Value >= 3, “Kıdemli Müdür”, “Yönetici”)))
    End Sub

    Adım 11: Kodu çalıştırdığımızda D2 hücresinde aşağıdaki sonucu elde edeceğiz.

    Örnek 3 - Adım 10

    Sonuç "Kıdemli Yönetici"dir. Bunun nedeni derecelendirmenin üç olması ve üçüncü IIF koşulunun TRUE olmasıdır. Bu nedenle, iç içe geçmiş IIF işlevi "Kıdemli Yönetici" değerini döndürür.

    C2 hücresindeki çalışanın notunu değiştirebilir ve farklı sonuçlar almak için kodu tekrar çalıştırabiliriz.

    Örnek 4: Aynı IIF Koşuluna Sahip Hücreler Arasında Döngü

    Şimdiye kadar tek hücreli veriler üzerinde çalıştık. Ancak gerçek dünya senaryosunda test etmek için birden fazla veri hücremiz olacak. O zaman aynı mantığı birden fazla kez yazamayız. Bu nedenle kod satırlarını en aza indirmek için döngüler kullanırız.

    Örneğin Excel'deki aşağıdaki verilere bakalım.

    Örnek 4

    Test edeceğimiz birden fazla hücre var, bu nedenle burada döngü kavramını kullanalım.

    Alt IFF_Ex4()
    Dim k As Long
    Dim LR As Long
    'Son kullanılan satırı bul
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    'Tüm hücreleri dolaşmak için döngüleri kullan
    For k = 2 To LR
    Range(“D” & k).Value = IIf(Range(“C” & k).Value >= 5, “Departman Başkanı”, IIf(Range(“C” & k).Value >= 4, “Yardımcı Başkan Yardımcısı”, _
    IIf(Range(“C” & k).Value >= 3, “Kıdemli Müdür”, Range(“B” & k).Value)))
    Sonraki k
    End Sub

    Tüm hücreler arasında dinamik olarak döngü yapılacak ve aşağıda gösterildiği gibi sonuç döndürülecektir.

    Örnek 4 - Çıktı

    Dikkat Edilmesi Gereken Önemli Noktalar

    • IF ve IIF benzer sonuçlar döndürür, ancak uygulamaları farklıdır.
    • VBA IIF, çalışma sayfasındaki IF işlevinin bir kopyasıdır, ancak hem doğru hem de yanlış kısımlarını değerlendirir ve tek bir sonuç döndürür.
    • VBA IIF ile “End IIF” ifadesini belirtmemize gerek kalmazken, IF ifadesinde bu gereklidir.

    1. VBA'da IF ve IIF arasındaki fark nedir?

    Temel farklar şunlardır:

     IF mantıksal bir ifadedir, oysa IIF mantıksal bir VBA fonksiyonudur.
     IF ifadesinde, "Else" kısmı isteğe bağlıdır; ancak, VBA IIF'te, else kısmı, yani yanlış kısım isteğe bağlı değildir.
     VBA IIF hem doğru kısmı hem de yanlış kısmı değerlendirir ve değerlerden birini döndürür.

    2. VBA IIF’i ne zaman kullanmalıyım?

    Excel çalışma sayfasındaki IF işlevine aşinaysanız, Excel IF'e benzediği için VBA IIF'i kullanmayı seçebilirsiniz.

    Özellikle birden fazla IF'e ihtiyaç duyduğunuzda kod satırlarını azaltmaya yardımcı olur. Ayrıca, bir sonuç vermeden önce hem doğru hem de yanlış kısımları kontrol eder ve bu da onu bu tür senaryolarda kullanışlı hale getirir.

    3. VBA IIF Neden Çalışmıyor?

    Örneğin, aşağıdaki koda bakın.

    Sub IFF_FAQ()
    Dim Score As Long
    Score = 85
    Dim IFFResult As String
    IFFResult = IIF(puan>80,"A", IIF (puan>60,"B", IIF (puan>50,"C","D"))
    End Sub


    Yukarıdaki kodda, üç iç içe IIF koşulu uyguladık.

    Ancak, kodu yürütmeye çalıştığımızda, aşağıdaki sözdizimi hata mesajını alıyoruz.

    VBA IIF - SSS 3

    IIF koşulları kapatılırken yetersiz kapanış parantezleri girilmesinden kaynaklanmaktadır.

    3 IIF koşulu uyguladığımız ancak yalnızca iki kapanış parantezi girdiğimiz için bu söz dizimi hatasını alırız.

    • IIF koşulu, birden fazla IIF ifadesinde gerekli parantezlerin kapatılmaması durumunda bir hata döndürür.

    Yorum Gönder

    DT KARİYER KPSS Dünyasına Hoş Geldiniz
    Sevgili dostum nasıl yardımcı olabilirim?
    Bu alana yazınız...