Veri sayısına göre düşey ara hk.

Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024
Merhaba Arkadaşlar,

Aşağıdaki kodu sürekli değiken veri sayısına göre nasıl bir şekilde döngüye uyarlarım.

Sub düşeyara()

Dim s2 As Worksheet
Dim s1 As Worksheet

Set s1 = Sheets("STOK ENVANTERİ")
Set s2 = Sheets("ÜRÜN SATIŞLARI")

s2.Range("J3") = WorksheetFunction.VLookup(s2.Range("A3"), s1.Range("A:C"), 3, 0)

End Sub

Saygılarımla,

Hakan ASLAN
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba Hakan.
Biraz açıklar mısın? Soru pek anlaşılmıyor.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Aranan veri bulunamadığında Düşeyara fonksiyonu hata verir. Bence aşağıdaki şekilde kullanmanız daha sağlıklı olacak.
Kod:
Sub düşeyara()

    Dim s2 As Worksheet
    Dim s1 As Worksheet
    
    Set s1 = Sheets("STOK ENVANTERİ")
    Set s2 = Sheets("ÜRÜN SATIŞLARI")
    For i = 2 To s2.[a65536].End(3).Row
        Set a = s1.Columns("a:c").Find(s2.Cells(i, 3))
        If Not a Is Nothing Then
            s2.Cells(i, 3) = s1.Cells(a.Row, 3)
        End If
    Next
    's2.Range("J3") = WorksheetFunction.VLookup(s2.Range("A3"), s1.Range("A:C"), 3, 0)

End Sub
 
Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024
Aranan veri bulunamadığında Düşeyara fonksiyonu hata verir. Bence aşağıdaki şekilde kullanmanız daha sağlıklı olacak.
Kod:
Sub düşeyara()

    Dim s2 As Worksheet
    Dim s1 As Worksheet
   
    Set s1 = Sheets("STOK ENVANTERİ")
    Set s2 = Sheets("ÜRÜN SATIŞLARI")
    For i = 2 To s2.[a65536].End(3).Row
        Set a = s1.Columns("a:c").Find(s2.Cells(i, 3))
        If Not a Is Nothing Then
            s2.Cells(i, 3) = s1.Cells(a.Row, 3)
        End If
    Next
    's2.Range("J3") = WorksheetFunction.VLookup(s2.Range("A3"), s1.Range("A:C"), 3, 0)

End Sub
Hamitcan Bey merhaba,

Öncelikle çok teşekkür ederim. Sanırım bir yerde anlatım eksikliğinde bulundum. Çalışma dosyasını ekliyorum, incelerseniz çok memnun olurum.

Saygılarımla,

Hakan ASLAN
 

Ekli dosyalar

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Dosyanız açılmıyor. Dosyanızın sıkıştırılmamış ufak bir örneğini ekleyin.
 
Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Bu şekilde dener misiniz ?
Kod:
Sub düşeyara()

Dim s2 As Worksheet
Dim s1 As Worksheet

Set s1 = Sheets("STOK ENVANTERİ")
Set s2 = Sheets("ÜRÜN SATIŞLARI")

For i = 2 To s2.[a65536].End(3).Row
        Set a = s1.Columns("a:c").Find(s2.Cells(i, 1))
        If Not a Is Nothing Then
            s2.Cells(i, "j") = s1.Cells(a.Row, 3)
        End If
    Next


's2.Range("J3") = WorksheetFunction.VLookup(s2.Range("A3"), s1.Range("A:C"), 3, 0)

End Sub
 
Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024
Bu şekilde dener misiniz ?
Kod:
Sub düşeyara()

Dim s2 As Worksheet
Dim s1 As Worksheet

Set s1 = Sheets("STOK ENVANTERİ")
Set s2 = Sheets("ÜRÜN SATIŞLARI")

For i = 2 To s2.[a65536].End(3).Row
        Set a = s1.Columns("a:c").Find(s2.Cells(i, 1))
        If Not a Is Nothing Then
            s2.Cells(i, "j") = s1.Cells(a.Row, 3)
        End If
    Next


's2.Range("J3") = WorksheetFunction.VLookup(s2.Range("A3"), s1.Range("A:C"), 3, 0)

End Sub
Bilmiyorum sizde nasıl çalışıyor ama bende 5 dk oldu henüz 9000 veriye ulaşabildi ve bilgisayara aşırı yük bindi. Farklı bir kodlama ile daha hızlı olmasını sağlaya bilirmiyiz sizce.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Döngüsüz olabileceğini düşünmüyorum ama farklı bir çözüm için tekrar destek isteyebilirsiniz tabii ki.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Aşağıdaki kodu deneyin.

Kod:
Sub test()
    Dim Satirsay As Integer
    Satirsay = Sheets("ÜRÜN SATIŞLARI").Cells(Rows.Count, "A").End(xlUp).Row
    With Sheets("ÜRÜN SATIŞLARI").Range("J3:J" & Satirsay)
        .Formula = "=VLookup(A3, 'STOK ENVANTERİ'!A:C, 3, 0)"
        .Copy
        .PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End With
End Sub
 
Son düzenleme:
Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024
Aşağıdaki kodu deneyin.

Kod:
Sub test()
    Dim Satirsay As Integer
    Satirsay = Sheets("ÜRÜN SATIŞLARI").Cells(Rows.Count, "J").End(xlUp).Row
    With Sheets("ÜRÜN SATIŞLARI").Range("J3:J" & Satirsay)
        .Formula = "=VLookup(A3, 'STOK ENVANTERİ'!A:C, 3, 0)"
        .Copy
        .PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End With
End Sub
Merhaba Muzaffer Bey,

Sadece iki değer getirdi ve yanlış satırdan başlayarak.

230632
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Kodu düzelttim yeniden deneyin.
 
Katılım
17 Ekim 2017
Mesajlar
110
Excel Vers. ve Dili
Microsoft Office 2013 Standard
Altın Üyelik Bitiş Tarihi
28.04.2024
Kodu düzelttim yeniden deneyin.
Çok hızlı ve doğru çalıştı, ellerinize sağlık. Sadece küçük bir detay kaldı, karşılığını bulamadığı değerlerin #Yok yerine - çizgi işaretini yazdıra bilirmiyiz.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Kod:
Sub test()
    Dim Satirsay As Integer
    Satirsay = Sheets("ÜRÜN SATIŞLARI").Cells(Rows.Count, "A").End(xlUp).Row
    With Sheets("ÜRÜN SATIŞLARI").Range("J3:J" & Satirsay)
        .Formula = "=VLookup(A3, 'STOK ENVANTERİ'!A:C, 3, 0)"
        .Copy
        .PasteSpecial xlPasteValues
        .Replace "#N/A", Replacement:="-"
        Application.CutCopyMode = False
    End With
End Sub
 
Üst