(19/10/2020, 09:12)HORZUM yazdı: (18/10/2020, 11:36)feraz yazdı: Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bul As Range
With ThisWorkbook.Sheets("Sayfa2")
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Set bul = .Range("A:A").Find(Target.Value, , , 1)
Target.Offset(, 1).Value = Empty
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
End If
End If
End With
Set bul = Nothing
End Sub
Bu kodda sadece A hücresine girilen bilgiyi B hücresine aktarıyor E hücresinden F hücresine nasıl olacak. Birkaç deneme yaptım olmadı
Kodu açıklayayım tam anlarsınız.
------------------------------------------------------------
If Target.Column = 1 Then
eğer 1.ci sütunda işlem olursa
-------------------------------------------------------------
If Target.Cells.Count = 1 Then
burası önemli değil
-------------------------------------------------------------
Set bul = .Range("A:A").Find(Target.Value, , , 1)
burası Sayfa2 nin A sütununda arama yapar.Aranan ise A sütununa girilen değerdir.
If Target.Column = 1 Then burdaki 1 yerine 4 olsaydı E sütununa girilen değer aranacaktı.
----------------------------------------------------------------------------------------------
Target.Offset(, 1).Value = Empty
Burdaki 1 demek 1.ci sütunun 1 sağı demek.3 yazılsaydı 3 sütun sağı demekti.
Kısaca temizler o hücreyi.
-------------------------------------------------------------------------------------------------
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
bul.Offset(, 1).Value burası ise aranan(bul) sayfa2 nin A sütunu olduğu için ve getirilecek veri sayfa2 B sütunu olduğu için 1 yazıldı.F sütunundan veri istenseydi5 yazılmalıydı.
----------------------------------------------------------------------------------------------------------------------------------
Kısaca Target demek hangi sayfanın hangi sütununa veri girilecekse o hücre (Hedef) demek.Burda Target ise unuttum lakin heralde sayfa1 deki A sütunu olacaktı.
Bul ise Sayfa2 nin A sütunu için.
Offset ise kaydır demek.
Aslında dictionary ile yazılan kod uzun olmasına rağmen daha hızlı çalışır.