• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Tablo1'den veri al

Katılım
14 Haziran 2006
Mesajlar
575
Tablo2 sayfasında N sutununa karşılık gelen veriler O:Y sutunlarında bulunmaktadır.Bu sutunlarda satır bazında karşılık gelen veriyi Tablo1 sayfasındaki tabloya bakarak M sutunundaki veriyi alaçak Tablo2 sayfasının L sutununa yazdırmak istiyorum.
Tablo2 sayfasındaki veriler değiştiği için böyle bir koda ihtiyacım var
 

Ekli dosyalar

Aşağıdaki 3 kod için aynı sonuç dönüyor. Fakat siz örneğinizde farklı değerler yazmışsınız. Kodlar eşleştiği için hepsi için "açacak" sonucu dönüyor. Kodlarınız da bu şekilde mükerrerlik var mı?

A14589
C145896
D5896


Hazırladığım kodu deneyin sonucu göreceksiniz.

Kod:
Sub AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim Veri As Range, Son As Long, Bul As Range
    
    Set S1 = Sheets("Tablo1")
    Set S2 = Sheets("Tablo2")
    
    S2.Range("L:L").ClearContents
    Son = S2.Cells(S2.Rows.Count, "N").End(3).Row
    
    For Each Veri In S2.Range("N2:N" & Son)
        For X = 15 To 25
            Set Bul = S1.Cells.Find(S2.Cells(Veri.Row, X), , , xlWhole)
            If Not Bul Is Nothing Then
                S2.Cells(Veri.Row, "L") = S1.Cells(Bul.Row, "M")
                Exit For
            End If
        Next
    Next

    Set Bul = Nothing
    Set S1 = Nothing
    Set S2 = Nothing

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Tablo2 sayfa ismi bir boşluklu yazılmış olduğundan kod çalışmadı sayfa ismini düzeltim kod çalıştı.Fakat kod sadece O sutununu ilk gördüğüne göre çalışıyor,diğer sutunlarada bakarak çalışacak.Tablo2'de3 5. 6. ve 7. satırlarda örnek var.
 
Tablo2 sayfa ismi bir boşluklu yazılmış olduğundan kod çalışmadı sayfa ismini düzeltim kod çalıştı.Fakat kod sadece O sutununu ilk gördüğüne göre çalışıyor,diğer sutunlarada bakarak çalışacak.Tablo2'de3 5. 6. ve 7. satırlarda örnek var.

Aşağıdaki kodu deneyiniz.

Kod:
Option Explicit
Sub aktar()
Dim a(), b(), c(), d As Object, deg As Variant
Dim i As Long, Y As Integer, Son1 As Long, Son2 As Long
Dim S1 As Worksheet, S2 As Worksheet
    Set S1 = Sheets("Tablo1")
    Set S2 = Sheets("Tablo2")
    Set d = CreateObject("Scripting.Dictionary")
    Son1 = S1.Cells(Rows.Count, "B").End(3).Row
    a = S1.Range("B2:M" & Son1).Value
        For i = 1 To UBound(a)
            deg = ""
            For Y = 1 To UBound(a, 2) - 1: deg = deg & a(i, Y): Next Y
            d(deg) = a(i, UBound(a, 2))
        Next i

    Son2 = S2.Cells(Rows.Count, "N").End(3).Row
    b = S2.Range("O2:Y" & Son2).Value
    ReDim c(1 To UBound(b), 1 To 1)
        For i = 1 To UBound(b)
            deg = ""
            For Y = 1 To UBound(b, 2): deg = deg & b(i, Y): Next Y
            c(i, 1) = d(deg)
        Next i
    S2.Range("L2:L" & Rows.Count).ClearContents
    S2.Range("L2").Resize(UBound(b)) = c
MsgBox "İşlem tamam....", vbInformation
End Sub
 
Son düzenleme:
Option Explicit
Sub aktar()
Dim a(), b(), c(), d As Object, deg As Variant
Dim i As Long, Y As Integer, Son1 As Long, Son2 As Long
Dim S1 As Worksheet, S2 As Worksheet
Set S1 = Sheets("Tablo1")
Set S2 = Sheets("Tablo2")
Set d = CreateObject("Scripting.Dictionary")
Son1 = S1.Cells(Rows.Count, "B").End(3).Row
a = S1.Range("B2:M" & Son1).Value
For i = 1 To UBound(a)
deg = ""
For Y = 1 To UBound(a, 2) - 1: deg = deg & a(i, Y): Next Y
d(deg) = a(i, UBound(a, 2))
Next i

Son2 = S2.Cells(Rows.Count, "N").End(3).Row
b = S2.Range("O2:Y" & Son2).Value
ReDim c(1 To UBound(b), 1 To 1)
For i = 1 To UBound(b)
deg = ""
For Y = 1 To UBound(b, 2): deg = deg & b(i, Y): Next Y
c(i, 1) = d(deg)
Next i
S2.Range("L2:L" & Rows.Count).ClearContents
S2.Range("L2").Resize(UBound(b)) = c
MsgBox "İşlem tamam....", vbInformation
End Sub

Kod güzel çalışıyor bir güzellik daha yapabilirmiyiz.
Aynı kod Tablo1 sayfası sabit Tablo2 sayfası değişiyor bu kodu her açılan sayfada çalışacak şekilde olabilirmi
 
Kodu Tablo1 sayfası sabit Tablo2 yi aktif sayfada çalış diye yapabilirmiyiz
 
Son düzenleme:
Kodda Set S2 = Sheets("Tablo2")
Tanımlı Tablo2 sayfasını aktif sayfa olarak nasıl tanımlayabiliriz.Her açtığım excel sayfasında çalıştırmak istiyorum
 
Set S2 = Sheets("Tablo2") satırı yerine

Kod:
Set S2 = Sheets(ActiveSheet.Name)

olarak deneyiniz.
 
Geri
Üst