Excel VBA'da DÜŞEYARA - VBA'da DÜŞEYARA Kodu Nasıl Yazılır?

Vlookup, excel'de bir çalışma sayfası işlevidir, ancak VBA'da da kullanılabilir, Vlookup'un işlevselliği VBA'daki işlevselliğe ve çalışma sayfasındaki işlevselliğe benzer, çünkü VBA'da Vlookup'ı kullanma yöntemi Uygulama'dan geçer. yöntem ve argümanlar aynı kalır.

Excel VBA'da DÜŞEYARA İşlevi

Excel'deki DÜŞEYARA işlevi, bir dizideki bir değeri aramak ve ona karşılık gelen değeri başka bir sütundan döndürmek için kullanılır. Aranacak değer ilk sütunda bulunmalıdır. Tam bir eşleşme mi yoksa yaklaşık bir eşleşme mi aranacağının da belirtilmesi gerekir. DÜŞEYARA çalışma sayfası işlevi, VBA kodlamasında kullanılabilir. İşlev yerleşik VBA değildir ve bu nedenle yalnızca çalışma sayfasını kullanarak çağırabilir.

Excel'deki DÜŞEYARA işlevi aşağıdaki sözdizimine sahiptir:

Burada, aranan_değer aranacak değer, tablo_dizisi tablo, sütun_indis_sayısı, dönüş değerinin sütun numarası, aralık_bak, eşleşmenin tam mı yoksa yaklaşık mı olduğunu belirtir. aralık_bak DOĞRU / YANLIŞ veya 0/1 olabilir.

VBA kodunda, DÜŞEYARA işlevi şu şekilde kullanılabilir:

Application.WorksheetFunction.vlookup (aranan_değer, tablo_dizisi, sütun_indis_sayısı, aralık_bak)

Excel VBA'da VLookup Nasıl Kullanılır?

Aşağıda, Excel VBA'daki VLookup Kodunun bazı örnekleri verilmiştir.

Excel VBA Örnek 1'deki VLookup Kodu

Excel VBA'da çalışma sayfası işlevini VLOOKUP olarak nasıl adlandırabileceğimizi görelim.

Diyelim ki öğrencilerin kimliği, adı ve onlar tarafından elde edilen ortalama puanlar.

Şimdi, 11004 kimlikli bir öğrencinin aldığı notlara bakmak istiyorsunuz.

Değeri aramak için aşağıdaki adımları izleyin:

  • Geliştirici Sekmesine gidin ve Visual Basic'e tıklayın.
  • VBA penceresinin altında, Ekle'ye gidin ve Modül'e tıklayın.
  • Şimdi, VBA DÜŞEYARA kodunu yazın. Aşağıdaki VBA DÜŞEYARA kodu kullanılabilir.

Sub vlookup1 ()
Dim student_id As Long
Dim marks As Long
student_id = 11004
Myrange = Range ("B4: D8")
işaretlerini ayarla = Application.WorksheetFunction.VLookup (öğrenci_kimliği, aralık, 3, Yanlış)
Son Alt

İlk olarak, aranacak değer olan bir öğrenci kimliği tanımlayın. Bu nedenle,

öğrenci_kimliği = 11004

Ardından, değerin ve dönüş değerinin bulunduğu aralığı tanımlarız. Verilerimiz B4: D8 hücrelerinde bulunduğundan, bir aralık-myrange şu şekilde tanımlarız:

Aralığı ayarla = Aralık ("B4: D8")

Son olarak, DÜŞEYARA işlevini bir değişkende Çalışma Sayfası işlevini kullanarak giriyoruz, şu şekilde işaretliyor:

işaretler = Application.WorksheetFunction.VLookup (öğrenci_kimliği, aralığım, 3, Yanlış)

Bir mesaj kutusundaki işaretleri yazdırmak için aşağıdaki komutu kullanalım:

MsgBox "Kimliği olan öğrenci:" & öğrenci_kimliği & "alındı" & işaretler ve "işaretler"

Geri dönecek:

ID: 11004 olan bir öğrenci 85 puan aldı.

Şimdi, çalıştır düğmesine tıklayın.

Excel sayfasında bir mesaj kutusunun görüneceğini fark edeceksiniz.

Excel VBA Örnek 2'deki VLookup Kodu

Çalışanların isimleri ve maaşlarına ilişkin verilere sahip olduğunuzu varsayalım. Bu verilere B ve C sütunları verilmiştir. Şimdi, bir hücredeki çalışanın adı F4 verildiğinde, çalışanın maaşı G4 hücresine dönecek şekilde bir VBA DÜŞEYARA kodu yazmanız gerekir.

VBA DÜŞEYARA kodunu yazalım.

  1. Değerlerin bulunduğu aralığı, yani B ve C sütunlarını tanımlayın.

Aralığı ayarla = Aralık ("B: C")

  1. Çalışanın adını tanımlayın ve F4 hücresinden adı girin.

Adı ayarla = Aralık ("F4")

  1. Maaşı G4 hücresi olarak tanımlayın.

Maaşı ayarla = Aralık ("G4")

  1. Şimdi, VBA'da WorksheetFunction kullanarak DÜŞEYARA işlevini çağırın ve maaş değerini girin. Bu, G4 hücresindeki değeri (Vlookup işlevinin çıktısı) döndürecektir. Aşağıdaki sözdizimi kullanılabilir:

salary.Value = Application.WorksheetFunction.VLookup (ad, aralığım, 2, Yanlış)

  1. Şimdi modülü çalıştırın. G4 hücresi, VBA DÜŞEYARA kodunu çalıştırdıktan sonra çalışanın maaşını içerecektir.

Çalışma sayfasında F4 hücresinin değerini "David" olarak değiştirdiğinizi ve kodu yeniden çalıştırdığınızda David'in maaşını döndüreceğini varsayalım.

Excel VBA Örnek 3'teki VLookup Kodu

Şirketinizin çalışanının kimliğini, adlarını, Departmanını ve maaşını içeren verilerine sahip olduğunuzu varsayalım. VBA'da Vlookup kullanarak, bir çalışanın adını ve departmanını kullanarak maaş ayrıntılarını almak istiyorsunuz.

Excel'deki vlookup işlevi, aranan_değer'i yalnızca tablo_dizisinin ilk sütunu olan tek bir sütunda aradığından, önce her çalışanın “Adını” ve “Bölümünü” içeren bir sütun oluşturmanız gerekir.

VBA'da, çalışma sayfasının B sütununa “Ad” ve “Departman” değerlerini ekleyelim.

Bunu yapmak için Geliştirici sekmesine gidin ve Visual Basic'e tıklayın. Ardından Ekle'ye gidin ve yeni bir modül başlatmak için Modül'e tıklayın.

Şimdi, B sütunu D sütununun (ad) ve E sütununun değerlerini içerecek şekilde kod yazalım.

Sözdizimi şu şekilde verilir:

Değerleri 4 itibaren yana i = 4 den İlk olarak, ilmek 'için' bir kullanımı inci bu durumda satır. Döngü, C sütununun son satırının sonuna kadar devam edecektir. Dolayısıyla, değişken I 'for' döngüsü içinde bir satır numarası olarak kullanılabilir.

Ardından, Hücreler (i, "B") olarak verilebilen Hücre için atanacak değeri girin (satır_sayısı, sütun B). Hücre (satır_sayısı, sütun D) ve "_" & Hücre (satır_sayısı, sütun E) olarak değer ).

B5 = D5 & "_" & E5 hücresini atamak istediğinizi varsayalım, kodu şu şekilde kullanabilirsiniz:

Hücreler (5, "B"). Değer = Hücreler (5, "D"). Değer & "_" ve Hücreler (5, "E"). Değer

Şimdi, B5: E24 dizisindeki arama değerini arayalım. Önce arama değerini girmeniz gerekir. Kullanıcıdan değeri (İsim ve Bölüm) alalım. Bunu yapmak için,

  1. dize olarak üç değişken, ad, departman ve aranan_val tanımlayın.
  2. Kullanıcıdan isim girişini alın. Kodu kullanın:

name = InputBox ("Çalışanın adını girin")

Kodu çalıştırdığınızda, giriş kutusundaki "Enter…" içeriği istem kutusunda görüntülenecektir. Komut istemine girilen dize, isim değişkenine atanacaktır.

  1. Departmanı kullanıcıdan alın. Yukarıdakine benzer şekilde yapılabilir.

departman = InputBox ("Çalışanın departmanını girin")

  1. Aşağıdaki söz dizimini kullanarak, lookup_val değişkenine ayırıcı olarak "_" ile adı ve bölümü atayın:

lookup_val = ad & “_” & departman

  1. B5 aralığındaki aranan_vali aramak için vlookup sözdizimini yazın: E24 onu değişken bir maaşla döndürür.

Değişken maaşı başlatın:

Dim maaşı As Long

Lookup_val'i bulmak için Vlookup işlevini kullanın. Tablo_dizisi Aralık ("B: F") olarak verilebilir ve maaş 5. sütunda yer alır. Aşağıdaki sözdizimi bu nedenle kullanılabilir:

maaş = Application.WorksheetFunction.VLookup (lookup_val, Range ("B: F"), 5, False)

  1. Maaşı bir mesaj kutusuna yazdırmak için sözdizimini kullanın:

MsgBox (Çalışanın maaşı ”& maaş)

Şimdi kodu çalıştırın. Adı girebileceğiniz çalışma sayfasında bir komut kutusu görünecektir. İsmi girdikten sonra (Sashi deyin) ve Tamam'ı tıklayın.

Bölüme girebileceğiniz başka bir kutu açılacaktır. Bölüme girdikten sonra IT deyin.

Çalışanın maaşını basacaktır.

Vlookup, adı ve departmanı olan herhangi bir çalışanı bulabilirse, bir hata verecektir. "Vishnu" adını ve "BT" departmanını verdiğinizi varsayalım, Çalışma zamanı hatası "1004" döndürür.

Bu sorunu çözmek için, kodda bu tür bir hatada bunun yerine "Değer bulunamadı" yazmasını belirtebilirsiniz. Bunu yapmak için,

  1. Vlookup sözdizimini kullanmadan önce aşağıdaki kodu kullanın:

Hata Olduğunda Mesaja Git

Kontrol:

Sondaki kod (Check :) izlenecek ve bir hata alırsa "mesaj" ifadesine gidecektir.

  1. Kodun sonunda (End Sub'dan Önce), hata numarası 1004 ise, "Çalışan verileri mevcut değil" mesaj kutusuna yazdırın. Bu, sözdizimi kullanılarak yapılabilir:

İleti:

Err.Number = 1004 ise O zaman

MsgBox ("Çalışan verileri mevcut değil")

Bitiş Eğer

Modül 1:

Alt vlookup3 ()
i = 4 Hücrelere (Rows.Count, "C") End (xlUp) .Sıra
Hücreleri (i, "B"). Değer = Hücreler (i, "D"). Değer & "_ "& Hücreler (i," E ") Değer
Sonraki iDim adı As String
Dim departmanı As String
Dim
lookup_val As String Dim maaş As Longname = InputBox (" Çalışanın adını girin ")
departman = InputBox (" çalışan ”)
lookup_val = isim &“ _ ”& departmanOn Hata Git Mesaj
kontrolü:
salary = Application.WorksheetFunction.VLookup (lookup_val, Range (“ B: F ”), 5, False)
MsgBox (“ Çalışanın maaşı ”& Maaş) Mesaj:
Eğer Err.Number = 1004 ise
MsgBox (“ Çalışan verileri mevcut değil ”)
End IfEnd Sub

Excel VBA'da VLookup Hakkında Hatırlanması Gerekenler

  • Vlookup işlevi, WorksheetFunction kullanılarak Excel VBA'da çağrılabilir.
  • Vlookup işlevinin sözdizimi Excel VBA'da aynı kalır.
  • VBA vlookup kodu lookup_value'yu bulamadığında, 1004 hatası verir.
  • Vlookup işlevindeki hata, bir hata döndürürse bir goto ifadesi kullanılarak yönetilebilir.

Ilginç makaleler...