• DİKKAT

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

Dizide ortak elaman sayısını bulma

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
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.
 
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
 
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?
 
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
 
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
 
Merhaba,
Alternatif olsun: Kodun sonuna eklenerek denenebilir...
Kod:
MsgBox Evaluate("=SUM(IF(ISERROR(MATCH({" & Join(Reklam, ",") & "},{" & Join(Yas, ",") & "},0)),0,1))")
 
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:
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

  • 5c8e20.jpg
    5c8e20.jpg
    45.4 KB · Görüntüleme: 4
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....
 
Geri
Üst