Makroda güncellediğim verilerimin son satırdan devam etmesini istiyorum.

Katılım
23 Şubat 2023
Mesajlar
1
Excel Vers. ve Dili
2021 Türkçe
Selamlar elimde şu şekilde bir kod satırlarım mevcut:

Sub tesedilenmiktar()
Dim wsVeriler As Worksheet
Dim sonSatir As Long
Dim i As Long

Set wsVeriler = ThisWorkbook.Sheets("veriler")

' E sütunundaki son satırı bul
sonSatir = wsVeriler.Cells(wsVeriler.Rows.Count, "E").End(xlUp).Row

' E sütunundaki değerleri kullanarak A:I aralığından 2. sütunu al (örnek)
For i = 2 To sonSatir
With wsVeriler.Cells(i, "D")
.FormulaR1C1 = "=VLOOKUP(RC5,mb51!R2C1:R1000C10,10,FALSE)"
.Value = .Value
End With

Next i

End Sub

Bu kodum sorunsuz çalışıyor ancak ben mb51 yazan sayfadaki verileri silip yerine yeni veriler getiriyorum. Bu yeni verilerin de çektiğim bu verilerin son satırından itibaren başlasın istiyorum eski verilerim silinmesin o sütundan istiyorum yani. Buna entegre edebileceğim bir kod bulamadım yardımcı olur musunuz?
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
612
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Selamlar elimde şu şekilde bir kod satırlarım mevcut:

Sub tesedilenmiktar()
Dim wsVeriler As Worksheet
Dim sonSatir As Long
Dim i As Long

Set wsVeriler = ThisWorkbook.Sheets("veriler")

' E sütunundaki son satırı bul
sonSatir = wsVeriler.Cells(wsVeriler.Rows.Count, "E").End(xlUp).Row

' E sütunundaki değerleri kullanarak A:I aralığından 2. sütunu al (örnek)
For i = 2 To sonSatir
With wsVeriler.Cells(i, "D")
.FormulaR1C1 = "=VLOOKUP(RC5,mb51!R2C1:R1000C10,10,FALSE)"
.Value = .Value
End With

Next i

End Sub

Bu kodum sorunsuz çalışıyor ancak ben mb51 yazan sayfadaki verileri silip yerine yeni veriler getiriyorum. Bu yeni verilerin de çektiğim bu verilerin son satırından itibaren başlasın istiyorum eski verilerim silinmesin o sütundan istiyorum yani. Buna entegre edebileceğim bir kod bulamadım yardımcı olur musunuz?
denyiniz
Kod:
Sub tesedilenmiktar()
    Dim wsVeriler As Worksheet
    Dim sonSatirD As Long
    Dim sonSatirE As Long
    Dim i As Long
    Dim hedefSatir As Long

    Set wsVeriler = ThisWorkbook.Sheets("veriler")

    ' D sütunundaki son dolu satırı bul (veriler burada birikiyor)
    sonSatirD = wsVeriler.Cells(wsVeriler.Rows.Count, "D").End(xlUp).Row

    ' E sütunundaki yeni verilerin son satırını bul
    sonSatirE = wsVeriler.Cells(wsVeriler.Rows.Count, "E").End(xlUp).Row

    ' Yeni verileri D sütununda alt alta ekle
    For i = 2 To sonSatirE ' E sütunu başlık satırı varsa 2'den başla
        hedefSatir = sonSatirD + i - 1 ' D sütununda verilerin altına ekle
        With wsVeriler.Cells(hedefSatir, "D")
            .FormulaR1C1 = "=VLOOKUP(R" & i & "C5,mb51!R2C1:R1000C10,10,FALSE)"
            .Value = .Value ' Formülü değere çevir
        End With
    Next i
End Sub
 
Katılım
11 Temmuz 2024
Mesajlar
328
Excel Vers. ve Dili
Excel 2021 Türkçe
Alternatif olarak;

Kod:
Sub tesedilenmiktar()
    Dim wsVeriler As Worksheet
    Dim wsMb51 As Worksheet
    Dim sonSatirVeriler As Long
    Dim sonSatirMb51 As Long
    Dim i As Long
    Dim hedefSatir As Long
    
    Set wsVeriler = ThisWorkbook.Sheets("veriler")
    Set wsMb51 = ThisWorkbook.Sheets("mb51")
    
    sonSatirVeriler = wsVeriler.Cells(wsVeriler.Rows.Count, "E").End(xlUp).Row
    sonSatirMb51 = wsMb51.Cells(wsMb51.Rows.Count, 1).End(xlUp).Row
    
    If sonSatirVeriler < 2 Then
        hedefSatir = 2
    Else
        hedefSatir = sonSatirVeriler + 1
    End If
    
    For i = 2 To sonSatirMb51
        wsVeriler.Cells(hedefSatir, "E").Value = wsMb51.Cells(i, 1).Value
        
        With wsVeriler.Cells(hedefSatir, "D")
            .FormulaR1C1 = "=VLOOKUP(RC5,mb51!R2C1:R" & sonSatirMb51 & "C10,10,FALSE)"
            .Value = .Value
        End With
        
        hedefSatir = hedefSatir + 1
    Next i
    MsgBox "Veriler başarıyla aktarıldı!", vbInformation
End Sub
 
Üst