Soru Formül To Makro

Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Merhaba;

Ekteki excel dosyasındaki işlemi Formül kullanarak DÜŞEYARA - İNDİS/KAÇINCI- KAYDIR/KAÇINCI işlevler ile yapabiliyorum. Makro öğrenmeye yeni başlıyorum nasıl yapabilirim. Yardımcı olabilir misiniz.

Teşekkür ederim.

Örnek Dosya
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Merhaba;
Bende yeni başladım sayılır. Umarım işinize yarar. Hata yoktur.

PHP:
Sub Düşeyara()
Dim s1 As Worksheet
Dim s2 As Worksheet
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")

s1.Range("D2") = WorksheetFunction.VLookup(s1.Range("A2"), s2.Range("A:B"), 2, 0)
End Sub
 
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Sn. Gicimi,
Sayfaya ait diğer sütunların bilgilerini getirmedi.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,319
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Kod:
Sub Test()
    With Sheets("Sheet1").Range("D2:D23")
        .FormulaLocal = "=EĞERHATA(DÜŞEYARA(A2;Sheet2!$A:$B;2;0);"""")"
        .Value = .Value
    End With
End Sub
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Alternatif olsun
Kod:
Sub Düşeyara()
Dim s1 As Worksheet: Dim s2 As Worksheet
Dim i As Integer: Dim son As Integer
Set s1 = Sheets("Sayfa1"): Set s2 = Sheets("Sayfa2")
Set wf = WorksheetFunction
son = s1.Cells(5000, "C").End(3).Row
For i = 2 To s2.Cells(5000, "B").End(3).Row
If wf.CountIf(s1.Range("D2:D" & son), s2.Range("B" & i)) > 0 Then
satır = wf.Match(s2.Range("B" & i), s1.Range("D2:D" & son), 0)
s2.Range("C" & i) = s1.Range("B" & satır + 1)
s2.Range("D" & i) = s1.Range("C" & satır + 1)
Else
s2.Range("C" & i) = "Bulunamadı": s2.Range("D" & i) = "Bulunamadı"
End If
Next i
End Sub
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
VBA kodları find komutu ile alternatif;
Kod:
Sub bul_59()
Dim sh As Worksheet, sonsat As Long, i As Long, k As Range
Sheets("Sheet1").Select
sonsat = Cells(Rows.Count, "A").End(xlUp).Row
Set sh = Sheets("Sheet2")
Range("D2:D" & Rows.Count).ClearContents
Application.ScreenUpdating = False
For i = 2 To sonsat
    Set k = sh.Range("A2:A" & Rows.Count).Find(Cells(i, "A").Value, , xlValues, xlWhole)
    If Not k Is Nothing Then
        Cells(i, "D").Value = k.Offset(0, 1).Value
    End If
Next i
Application.ScreenUpdating = True
MsgBox "Bitti"
End Sub
 
Son düzenleme:
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Sn @çıtır , @Orion1 Alternatif kodlar için çok teşekkür ederim. Benim için çok değerli kodlar. Yazmış olduğunuz kodlar hakkında bilgi verebilir misiniz. (VBA yeni başlayan bir kişi için) :giggle:
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,319
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Evren beyin kodları kısaca excel sayfasında sıklıkla kullanılan CTRL+F (BUL) komutunun VBA'ya uyarlanmış halidir.
 
Üst