dizi içinde kaçıncı

Katılım
12 Kasım 2014
Mesajlar
255
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
15-05-2023
Merhaba,

bir dizi içinde aradağım değeri kaçıncı olduğunu nasıl bulabilirim
Aşağıdaki gibi kod oluşturdum fakat çalışmıyor.
yardımcı olursanız memnun olurum.

Kod:
ReDim hdf1(1 To UBound(a2, 1), 1)

'hdf1 yukarıdaki gibi alan tanımlamladım

For i = LBound(kyn, 1) To UBound(kyn, 1)
    krt = kyn(i, 1)
    If dc1.Exists(krt) And kyn(i, 3) > 0 Then
        x = Kacıncı(kyn(i, 1), hdf1)
        Debug.Print x
    End If
Next i



Function Kacıncı(aranan As Variant, dizi As Variant) As Integer
    x = WorksheetFunction.Match(aranan, dizi, 0)
End Function
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sorun çözülür mü bilmiyorum ama x yerine Kacıncı yazmayı dener misiniz? Ayrıca excelde zaten KAÇINCI formülü var ve siz kodda MATCH ile bu formülü kullanmıyor musunuz?
 
Katılım
12 Kasım 2014
Mesajlar
255
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
15-05-2023
kullandığım kod içinde bir çok dizi var ve diğer dizilerde bulanan verilerle eşleştirme yapmam gerekiyor.

"Ayrıca excelde zaten KAÇINCI formülü var ve siz kodda MATCH ile bu formülü kullanmıyor musunuz? "

aslında kullanamıyorum.
örnek olması için aşağıdaki gibi kod oluşturdum.

Kod:
Sub deneme()
Dim Kacıncı As Integer
Set dc1 = CreateObject("scripting.dictionary")

alan1 = Range("A1:C" & Cells(Rows.Count, "A").End(3).Row).Value
alan2 = Range("F1:H" & Cells(Rows.Count, "F").End(3).Row).Value


ReDim hdf(1 To UBound(a2, 1), 1 To 3)
ReDim kyn(1 To UBound(a2, 1), 1 To 3)


    For i = 1 To UBound(alan1)

            say1 = say1 + 1
            hdf(say1, 1) = alan1(i, 1) & "|" & alan1(i, 2) & "|" & alan1(i, 3)
            hdf(say1, 2) = "ver1"
            hdf(say1, 3) = "ver12"
    Next i


    For i = 1 To UBound(alan2)
            say2 = say2 + 1
            kyn(say2, 1) = alan2(i, 1) & "|" & alan2(i, 2) & "|" & alan2(i, 3)
            kyn(say2, 2) = "ver3"
            kyn(say2, 3) = "ver4"
    Next i


For i = LBound(kyn, 1) To UBound(kyn, 1)
    x = Kacıncı(kyn(i, 1), hdf)
    
    ' yani istediğim kyn(i, 1)'i  hdf dizisinin ilk sütununda aramak eğer var ise kacıncı satırda olduğunu öğrenmek.
    
    Debug.Print x
Next i
End Sub

Function Kacıncı(aranan As Variant, dizi As Variant) As Integer
    Kacıncı = WorksheetFunction.Match(aranan, dizi, 0)
End Function
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
excel'deki worksheet veya VBA fonksiyonlarını aynen yazıp KTF hazırlamaya gerek yok.

kacıncı fonksiyonunu tamamen silip hayatınızdan çıkarın. herhangi bir kolaylık sağlamıyor.

2 boyutlu bir "dizi"de "dizi"nin hangi satırında veya sütununda arama yaptığınızı belirtin.

Kod:
rSira = Application.Match(aranan, Application.Index(dizi, 4, 0), 0) 'dizi'nin 4üncü satırında arama yap
nSira = Application.Match(aranan, Application.Index(dizi, 0, 3), 0) ''dizi'nin 3üncü sütununda arama yap
veya daha görsel olarak, with blokunda

Kod:
    With Application
        rSira = .Match(aranan, .Index(dizi, 4, 0), 0) 'dizi'nin 4üncü satırında arama yap
        nSira = .Match(aranan, .Index(dizi, 0, 3), 0) ''dizi'nin 3üncü sütununda arama yap
    End With
 
Katılım
12 Kasım 2014
Mesajlar
255
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
15-05-2023
Hocam çok teşekkür ederim. çok faydası oldu
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim.
işe yaradığına sevindim.
 
Üst