Soru Formül To Makro

Katılım
9 Haziran 2019
Mesajlar
144
Beğeniler
13
Excel Vers. ve Dili
Office 2016 Eng.
#1
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
 
Katılım
3 Şubat 2008
Mesajlar
545
Beğeniler
36
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
#2
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
144
Beğeniler
13
Excel Vers. ve Dili
Office 2016 Eng.
#3
Sn. Gicimi,
Sayfaya ait diğer sütunların bilgilerini getirmedi.
 

Korhan Ayhan

Moderatör
Yönetici
Katılım
15 Mart 2005
Mesajlar
24,923
Beğeniler
495
Excel Vers. ve Dili
OFFICE 2019 PRO TR
#4
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
 

çıtır

Altın Üye
Altın Üye
Katılım
6 Mart 2005
Mesajlar
5,116
Beğeniler
891
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
#7
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
21,787
Beğeniler
451
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
#8
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
144
Beğeniler
13
Excel Vers. ve Dili
Office 2016 Eng.
#9
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

Moderatör
Yönetici
Katılım
15 Mart 2005
Mesajlar
24,923
Beğeniler
495
Excel Vers. ve Dili
OFFICE 2019 PRO TR
#10
Evren beyin kodları kısaca excel sayfasında sıklıkla kullanılan CTRL+F (BUL) komutunun VBA'ya uyarlanmış halidir.
 
Üst