Dizide ortak elaman sayısını bulma

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

Aşağıdaki gibi iki dizi olsun,
Burada her iki dizide de kaç adet ortak elaman var bunları nasıl tespit edebiliriz?
Örnek: Aşağıdaki dizide 23 ve 44 elamanları her ikisinde de ortak; sonuç 2 verecek şekilde bir fonksiyon arıyorum

Kod:
Sub Dizilerrr()
Dim Reklam(3) As String
Dim Yas(4) As Integer


Reklam(0) = 12
Reklam(1) = 23
Reklam(2) = 19
Reklam(3) = 44


Yas(0) = 29
Yas(1) = 23
Yas(2) = 21
Yas(3) = 44
Yas(4) = 40

End Sub
teşekkürler,
iyi akşamlar.
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Merhaba , belki daha kolay bir yöntemi de vardır ama aklıma ilk gelen bu oldu.

Kod:
Sub Dizilerrr()
Dim Reklam(3) As String
Dim Yas(4) As Integer


Reklam(0) = 12
Reklam(1) = 23
Reklam(2) = 19
Reklam(3) = 44

Yas(0) = 29
Yas(1) = 23
Yas(2) = 21
Yas(3) = 44
Yas(4) = 40

For Each Rkl In Reklam
    For Each ys In Yas
        If Rkl * 1 = ys * 1 Then
            Adt = Adt + 1
        End If
    Next
Next
MsgBox Adt


End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba , belki daha kolay bir yöntemi de vardır ama aklıma ilk gelen bu oldu.

Kod:
Sub Dizilerrr()
Dim Reklam(3) As String
Dim Yas(4) As Integer


Reklam(0) = 12
Reklam(1) = 23
Reklam(2) = 19
Reklam(3) = 44

Yas(0) = 29
Yas(1) = 23
Yas(2) = 21
Yas(3) = 44
Yas(4) = 40

For Each Rkl In Reklam
    For Each ys In Yas
        If Rkl * 1 = ys * 1 Then
            Adt = Adt + 1
        End If
    Next
Next
MsgBox Adt


End Sub
Emre Hocam ilginize teşekkürler
Fonksiyon şeklinde yapamaz mıyız?
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Bu şekilde mi ?
Kod:
Sub Dizilerrr()
Dim Reklam(3) As String
Dim Yas(4) As Integer

Reklam(0) = 12
Reklam(1) = 23
Reklam(2) = 19
Reklam(3) = 44

Yas(0) = 29
Yas(1) = 23
Yas(2) = 21
Yas(3) = 44
Yas(4) = 40

MsgBox Adt(Reklam, Yas)

End Sub

Function Adt(Reklam, Yas)
    For Each Rkl In Reklam
        For Each ys In Yas
            If Rkl * 1 = ys * 1 Then Adt = Adt + 1
        Next
    Next
End Function
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Bu şekilde mi ?
Kod:
Sub Dizilerrr()
Dim Reklam(3) As String
Dim Yas(4) As Integer

Reklam(0) = 12
Reklam(1) = 23
Reklam(2) = 19
Reklam(3) = 44

Yas(0) = 29
Yas(1) = 23
Yas(2) = 21
Yas(3) = 44
Yas(4) = 40

MsgBox Adt(Reklam, Yas)

End Sub

Function Adt(Reklam As Variant, Yas As Variant)
    For Each Rkl In Reklam
        For Each ys In Yas
            If Rkl * 1 = ys * 1 Then Adt = Adt + 1
        Next
    Next
End Function
teşekkürler
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Alternatif olsun: Kodun sonuna eklenerek denenebilir...
Kod:
MsgBox Evaluate("=SUM(IF(ISERROR(MATCH({" & Join(Reklam, ",") & "},{" & Join(Yas, ",") & "},0)),0,1))")
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Alternatif,

Dim Reklam(3) As String

Yukarıdaki satırı' da integer yaptıktan sonra aşağıdaki kod ile ortak değerlerin sayısı bulunabilir.

Kod:
deg = Application.Count(Application.Match(Reklam, Yas, 0))
 
Son düzenleme:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Alternatif olsun: Kodun sonuna eklenerek denenebilir...
Kod:
MsgBox Evaluate("=SUM(IF(ISERROR(MATCH({" & Join(Reklam, ",") & "},{" & Join(Yas, ",") & "},0)),0,1))")
Ömer Hocam ilginize teşekkürler,
verdiğiniz formülü yazınca ekli hata mesajını alıyorum.
 

Ekli dosyalar

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Eksik ifade etmişim, kusuruma bakmayınız. Yas değişkenini de string olarak tanımlayıp deneyiniz.
Erdem Hocam ve Ömer Hocam her ikinize de teşekkürler....
 
Üst