Soru Makro İle Veri Doğrulama

Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
İyi günler ;
Ekli örnek dosyada J3 hücresinden ŞEFLİĞİ ni seçtiğimizde J4,J5 ve J6 hücresine KAYIT sayfasındaki ilgili verileri makro ile nasıl alabiliriz ?
 
Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
Merhabalar,
Arkadaşlar konuya yardımcı olabilir misiniz
 

numan şamil

Destek Ekibi
Destek Ekibi
Katılım
27 Ocak 2011
Mesajlar
1,231
Excel Vers. ve Dili
Ofis 2013 Türkçe
Merhaba
Bir Modüle aşağıdaki kodları yapıştırın
Kod:
Sub Numan()
Dim SR1, SR2 As Worksheet
Dim x, satır As Long
Set SR1 = Sheets("VERİ")
Set SR2 = Sheets("kayıt")
SR1.Range("J4:J6").ClearContents
Application.ScreenUpdating = False
For x = 20 To SR2.Cells(Rows.Count, "J").End(3).Row
If SR1.Range("J3").Value <> "" And SR1.Range("J3").Value = SR2.Range("J" & x).Value Then
SR1.Range("J4").Value = SR2.Range("K" & x).Value
SR1.Range("J5").Value = SR2.Range("L" & x).Value
SR1.Range("J6").Value = SR2.Range("M" & x).Value
End If
Next x
Application.ScreenUpdating = True
End Sub
Veri sayfasının kod bölümüne
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
   If Intersect(Target, Range("J3")) Is Nothing Then Exit Sub
Numan
son:
End Sub
Yapıştırıp denermisiniz
 
Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
Sayın Numan asıl kodu kendi dosyama uyarladım.Fakat birleştirilmiş hücrede çalışmadı
Birleştirilmiş hücreler
J3:M3
J4:M4
J5:M5
J6:M6
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Merhaba @ormann

Anladığım kadarıyla bu şekilde deneyebilir misiniz.

VERİ sayfası J3 seçiliyken veri doğrulama liste seçeneğine
C++:
=DOLAYLI("kayıt!J20:J"&KAÇINCI("ZZZ";kayıt!$J:$J;1))
Formülle sonuç almak için J4 hücresine
C++:
=EĞER($J$3="";"";DÜŞEYARA($J$3;kayıt!$J$20:$M$21;SATIR(A2);0))
formülünü uygulayıp aşağı doğru kopyala

Makro ile sonuç almak için VERİ sayfasının kod bölümüne şu kodu yapıştır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [J3]) Is Nothing Then Exit Sub
Set s = Sheets("kayıt").Range("J20:J" & Rows.Count).Find(Target, , LookIn:=xlValues, LookAt:=xlWhole)
[J4:J6].ClearContents
If Not s Is Nothing Then
For su = 1 To 3: Target.Offset(su, 0) = Sheets("kayıt").Cells(s.Row, "J").Offset(0, su): Next
End If
End Sub
Son olarak J3 hücresinde açılan listeden şeflik seç
 
Üst