AccessTr.neT

Tam Versiyon: Makro Veya Kod Nasıl Oluştururum
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3
Deneme-1 dosyasındaki A1:A5000 hücreleri arasında herhangi bir hücreye  Sayfa2'de bulunan verilerden A,B,C girilince B2 hücresine karşısındaki rakamları getirecek makro veya kod nasıl oluştururum.

Not: A1:A5000 hücreleri arasına ekleme veya silme yapılabilir. VERİ DOĞRULAMA VEYA LİSTBOX HARİÇ. Direkt yazılınca verinin gelmesi gerekiyor.
B satırına aşağıdaki formülü girip aşağı sürükleyerek dener misiniz
=DÜŞEYARA(A1;Sayfa2!A:B;2)
yada
=EĞERHATA(DÜŞEYARA(A1;Sayfa2!A:B;2);"")
(16/10/2020, 16:06)berduş yazdı: [ -> ]B satırına aşağıdaki formülü girip aşağı sürükleyerek dener misiniz
=DÜŞEYARA(A1;Sayfa2!A:B;2)
yada
=EĞERHATA(DÜŞEYARA(A1;Sayfa2!A:B;2);"")
SAĞOLASIN 1.FORMUL İŞE YARADI
2. formülde boş alan olduğunda HATA iletisi yazmaz tek fark o
kusura bakmayın formül eksik olmuş
=DÜŞEYARA(A1;Sayfa2!A:B;2;0)
yada
=EĞERHATA(DÜŞEYARA(A1;Sayfa2!A:B;2;0);"")
düzeltmelisiniz
yoksa mesela siz Zyazsanız bile sonucu 30 gösteriyor
Sayfanın kod bölümüne alttaki kodları ekleyin alternatif olarak.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dict As Object, son As Long, veri(), i As Long
   
    Set dict = CreateObject("Scripting.dictionary")
    dict.comparemode = 1 '1 kücük büyük harf icin
   
    With ThisWorkbook.Sheets("Sayfa2")
        son = .Range("A" & Rows.Count).End(3).Row
        veri = .Range("A1:B" & son).Value
        If Target.Column = 1 Then
            If Target.Cells.Count = 1 Then
                For i = LBound(veri) To UBound(veri)
                    If Not dict.exists(veri(i, 1)) Then dict.Add veri(i, 1), veri(i, 2)
                Next
                Target.Offset(0, 1).Value = dict(Target.Value)
            End If
        End If
    End With
    Set dict = Nothing: Erase veri
End Sub

[Resim: do.php?img=10528]
Sayfalar: 1 2 3