Vlookup'ı Makronun İçinde Yapmak

Emin Kolac

Altın Üye
Katılım
12 Haziran 2019
Mesajlar
6
Excel Vers. ve Dili
Cloud
Merhabalar herkese

Normalde formül olarak vlookup kullanıyorum fakat verileri çekmek için ayrıca bir kolon oluşturmak gerekiyor ve ben bunu istemiyorum. Ayrıca bu olayı otomatize etmek için bir butona atamam gerekiyor fakat bunu yapamıyorum.

MASTER_WareHouse doyasındaki ag kolonundaki 1Z ile başlayan kodu Unishippers_Shipment_History_Export dosyanının x kolonundaki veriyle karşılaştıracak daha sonra AF kolonundaki veriyi MASTER_WAREHOUSE'un AG kolonuna geri yapıştıracak bir makro yapmaya çalışıyorum.

Burada yaşadığım sorun işe şu. Makroyu kaydet tuşuna basıp vlookup formülüne ulaşıyorum. Fakat daha sonra formül=değer dediğim zaman hata veriyor. Yardımlarınız için teşekkürler




Kod:
 ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],Unishippers_Shipment_History_Export.xlsx!C24:C32,9,0)"
    Yazıyor excel
        
        Fakat
            Atadığım değişken=VLOOKUP(RC[-1],Unishippers_Shipment_History_Export.xlsx!C24:C32,9,0)
            dediğim zaman hata veriyor.
 

Ekli dosyalar

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
Dosya kapalıysa hata verir.:cool:
 

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
Arama yapılacak dosya kapalıysa.
Düşeyarada her 2 dosyanında açık olması lazım.:cool:
 

Emin Kolac

Altın Üye
Katılım
12 Haziran 2019
Mesajlar
6
Excel Vers. ve Dili
Cloud
aslında iki dosya da açık şekilde kodu yazıyorum. Ayrıca bu soruna ek olarak, Shipping Cost tanımlarken bile hata veriyor neden?
Kod:
Sub Makro1()
    Dim Shipping Cost as String
    Shipping Cost=VLOOKUP(RC[-1],Unishippers_Shipment_History_Export.xlsx!C24:C32,9,0)
    
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
Böyle yapın.:cool:
Dim Shipping_Cost as String
 

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
O kodu silin bunu yazın.:cool:
Kod:
Sub arabul_59()
Dim dosya As String, yol As String, k As Range
Dim wb As Workbook, sonsat As Long, i As Long
sonsat = Cells(Rows.Count, "AG").End(xlUp).Row
yol = ThisWorkbook.Path & "\"
dosya = "Unishippers_Shipment_History_Exportdüzenclendi.xlsx"
If Workbooks.Open(yol & dosya).ReadOnly Then
    Workbooks(dosya).Close False
End If
ThisWorkbook.Activate
Set wb = Workbooks(dosya)
For i = 2 To sonsat
    If Left(Cells(i, "AG").Value, 2) = "1Z" Then
        Set k = wb.Sheets("Unishippers_Shipment_History_Ex").Range("X:X"). _
            Find(Cells(i, "AG").Value & "*", , xlValues, xlWhole)
        If Not k Is Nothing Then Cells(i, "AG").Value = k.Offset(0, 8).Value
    End If
Next i
wb.Close False

MsgBox "Bitti."
End Sub
 

Emin Kolac

Altın Üye
Katılım
12 Haziran 2019
Mesajlar
6
Excel Vers. ve Dili
Cloud
Çok teşekkür ederim çok makbule geçti. İlk fırsatta deneyeceğim inşallah
 

Korhan Ayhan

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

İki dosyada aynı klasörde olmalıdır. (Bu kısım esnetilebilir.)

Dosyayı açmadan İNDİS+KAÇINCI formülü ile veriler alınmaktadır.

Kod:
Sub Veri_Al()
    Dim K1 As Workbook, Yol As String, Dosya_Adi As String, Kriter As String
    Dim Sayfa_Adi As String, X As Long, Son As Long, Formul As String
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set K1 = ThisWorkbook
    Yol = K1.Path
    Dosya_Adi = "Unishippers_Shipment_History_Exportdüzenclendi.xlsx"
    Sayfa_Adi = "Unishippers_Shipment_History_Ex"

    Son = Cells(Rows.Count, "AG").End(3).Row

    For X = 2 To Son
        If Left(Cells(X, "AG"), 2) = "1Z" Then
            Kriter = Cells(X, "AG").Value
            Formul = "=INDEX('" & Yol & "\[" & Dosya_Adi & "]" & Sayfa_Adi & "'!AF:AF,MATCH(""" & _
                     Kriter & """,'" & Yol & "\[" & Dosya_Adi & "]" & Sayfa_Adi & "'!X:X,0))"
            Cells(X, "AG").Value = Formul
            Cells(X, "AG").Value = Cells(X, "AH").Value
        End If
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "Veri alma işlemi tamamlanmıştır.", vbInformation
End Sub
 

Emin Kolac

Altın Üye
Katılım
12 Haziran 2019
Mesajlar
6
Excel Vers. ve Dili
Cloud
Çok teşekkür ederim çözümler için çok yardımcı oldu
 
Üst