• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Vlookup Fonsiyonunda Array(dizi) Kullanımı

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Vlookup fonksiyonunda Table_Array olarak array(dizi)'ı nasıl kullanabiliriz?

Örneğin,

Combobox'dan bir ayı seçtiğimde bana seçtiğim ayın gün sayısını Textboxda göstermesi gibi.

ay=array("Ocak","Şubat","Mart"...)
gün=array("31","28","31"...)

Texbox1.Value=WorksheetFunction.VLookup(Combobox1.Value,array1??,2,False)

Çok basittir ama şu an aklıma bir çözüm gelmedi.
 
Son düzenleme:
Valla Sayın Ripek ben hiçbişe anlamadım bu sorudan.:???:
 
Sn.alpi

Ekteki dosyadaki gibi bir çalışma yapmak istiyorum.

Burada Vlookup a2:b13 aralığından değilde array(dizi)'dan bulmasını ve 2.değerini yazmasını istiyorum.
 
Excel sayfasındaki verileri sayfaya yazmak istemiyorsunuz bunu kodlara dahil ederek arama yapmak istiyorsunuz ve değişken olarakda dizi kullanmak istiyorsunuz yanlış anlamadıysam.
Şöyle yapabilirsiniz;
Kod:
Dim Dizi(11, 1)
Private Sub ComboBox1_Change()
    TextBox1.Value = WorksheetFunction.VLookup(ComboBox1.Value, Dizi, 2, False)
End Sub
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub UserForm_Initialize()
    For i = 0 To 11
        Dizi(i, 0) = MonthName(i + 1)
        ComboBox1.AddItem MonthName(i + 1)
    Next
    Dizi(0, 1) = 31
    Dizi(1, 1) = 28
    Dizi(2, 1) = 31
    Dizi(3, 1) = 30
    Dizi(4, 1) = 31
    Dizi(5, 1) = 30
    Dizi(6, 1) = 31
    Dizi(7, 1) = 31
    Dizi(8, 1) = 30
    Dizi(9, 1) = 31
    Dizi(10, 1) = 30
    Dizi(11, 1) = 31
End Sub

Bu kodları ekteki dosyanızdaki formun kod editörüne yazınız.
 
Sorumu doğru anlamışsınız ama kodlarını çalıştıramadım.Siz bu kodları denediniz mi?
 
Userforma aşağıdaki kodu yazın.

Kod:
Private Sub UserForm_Initialize()
For a = 1 To 12
ComboBox1.AddItem Format(1 & "." & a & "." & 2006, "mmmm")
Next
End Sub

Comboboxada aşağıdaki kodu yazın.

Kod:
Private Sub ComboBox1_Change()
TextBox1 = Day(DateSerial(2006, ComboBox1.ListIndex + 2, 1) - 1)
End Sub

Not:comboboxun rowsource özelliğine yazdığınız aralığı silmeyi unutmayın.
 
Sn.Leventm ve Sn.alpi teşekkür ederim.

Verdiğiniz kodlar işime yaradı.
 
Ama sizin sorunuza bir cevap olmadı aslında, size bir arrayın içinden bir veri seçildiğinde bunun kaçıncı veri olduğunu bulan bir fonksiyon lazım. Örneğin

ay=array("Ocak","Şubat","Mart"...)

Burada ocak seçildiğinde bunun dizinin kaçıncı elemanı olduğunu bulmanız gerekiyor. Bu konuyu biraz araştıralım.
 
Sayın Levent bu sorunun cevabını bilmiyorum eğer cevap sizde varsa öğrenmek isterim.
 
Excel hücresinde A1'e yazdığın değere göre ayları bulunabilir ama tersten işliyormu bilmiyorum.

=ARA(A1;{1;2;3;4;5;6;7;8;9;10;11;12};{"Ocak";"Şubat";"Mart";"Nisan";"Mayıs";"Haziran";"Temmuz";"Ağustos";"Eylül";"Ekim";"Kasım";"Aralık"})

Bunu koda uyarlamak lazım.
 
Sayın Levent bu sorunun cevabını bilmiyorum eğer cevap sizde varsa öğrenmek isterim.

Cevabını bende bilmiyorum. Array şeklinde bir dizi tanımlanırsa sonuca ulaşamadım ama dizi aşağıdaki gibi tanımlanırsa sonuç elde edebildim.

Kod:
Sub bul()
Dim ay(12)
For a = 1 To 12
ay(a) = MonthName(a)
Next
MsgBox WorksheetFunction.Match("Aralık", ay(), 0) - 1
End Sub
 
...seçildiğinde bunun dizinin kaçıncı elemanı olduğunu bulmanız gerekiyor. Bu konuyu biraz araştıralım.

Sn.leventm

Olay aslında tam sizin anlattığınız gibi.Ama ben şu anki sorunumu aşağıdaki şekilde hallettim.Ama araştırılması gereken bir konu.

Kod:
Dim Dizi(11, 1) As Variant
Sub DiziOlustur()
    For i = 0 To 11
          Dizi(i, 0) = MonthName(i + 1)
    Next
    Dizi(0, 1) = 31
    Dizi(1, 1) = 28
    Dizi(2, 1) = 31
    Dizi(3, 1) = 30
    Dizi(4, 1) = 31
    Dizi(5, 1) = 30
    Dizi(6, 1) = 31
    Dizi(7, 1) = 31
    Dizi(8, 1) = 30
    Dizi(9, 1) = 31
    Dizi(10, 1) = 30
    Dizi(11, 1) = 31
End Sub

Sub  Göster()
Call DiziOlustur
MsgBox WorksheetFunction.VLookup(Combobox1.Value, Dizi, 2, False)
End Sub
 
Çözüm çok basitmiş.

Kod:
Sub bul()
deg = Array("a", "b", "c", "d", "e")
MsgBox WorksheetFunction.Match("d", deg, 0)
End Sub
 
Bu durumda sorunuzun çözümü aşağıdaki gibi oluyor.

Kod:
ay=array("Ocak","[COLOR=black]Şubat[/COLOR]","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık")
gun=array(31,28,31,30,31,30,31,31,30,31,30,31)
deg=worksheetfunction.match(combobox1,ay,0)
textbox1=gun(deg)

Not: Bu arada şubat ayı 29 gün çekerse bunu kod içinde değiştirmeniz gerekir.
 
Tebrikler sayın Levent. Sayenizde öğrenmiş olduk.
 
Bende kaçıncı fonksiyonu ile çözüm buldum koda adapte ediyordum ama Levent Bey yine hızlı çıkmış. Teşekkürler Levent Bey.
 
Rica ederim arkadaşlar bende uğraşırken yeni bir şeyler daha öğrenmiş oldum, beni yanıltan match fonksiyonu içinde diziyi ay() şeklinde göstermiş olmam oldu, halbuki () parantezlerine gerek yokmuş. Yukarıdaki örneklere dikkat ederseniz eğer diziyi dim olarak tanımlamışsanız match fonksiyonu içinde ay() şeklinde kullanmak gerekiyor. Array kullanımında parantezlere gerek yok.
 
Geri
Üst