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