Çözüldü Veri Kıyaslama ve Aktarma,

Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Merhaba;

Sayfa 2 ye "Malzeme No" bilgilerini tarihe göre sıralaması ve "Malzeme Adı " "MM" ve "MZ" olanları Sayfa2 ye Diğer Sütunlardaki bilgiler ile birlikte aktarmasını istiyorum. Verinin fazla olmasından dolayı makro konusunda yardımlarınızı bekliyoruz.
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Veri setindeki tüm malzeme adları "MM" veya "MZ" . O zaman bu iş için makroya gerek yok ki ..... verileri kopyalayıp, öbür sayfaya yapıştırın. Sonra "Data" sekmesinde sıralama işini belirttiğiniz 2 kritere göre yapın.

.
 
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@Haluk hocam hem öğrenme amaçlı hemde daha sonra farklı sayfalardanda veri getirmek için makro ile yapmak istiyorum.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Anlıyorum ...

Dediğim işi manuel yaparken makro kaydet yöntemini kullanırsanız, gerekli kodları üretmiş olursunuz. Onları inceleyebilirsiniz.

Başka bir alternatif de ADO-SQL kullanmak olabilir, bununla ilgili kod ise aşağıdadır...

Kod:
Sub Test()
    'Haluk - 12/11/2018
    Dim objConnection As Object
    Dim strConnection As String
    Dim strQuery As String
    Dim RS As Object
    
    Sheets("Sayfa2").Range("A2:G" & Rows.Count) = ""
    
    Set objConnection = CreateObject("ADODB.Connection")
    
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                    "User ID=Admin;" & _
                    "Data Source='" & ThisWorkbook.FullName & "';" & _
                    "Mode=Read;" & _
                    "Extended Properties=""Excel 12.0 Macro;"";"

    strQuery = "Select * from [Sayfa1$] " & _
               "where [Malzeme Adı] = 'MM' or [Malzeme Adı] = 'MZ' order by [Tarih], [Malzeme No] asc"
    
    objConnection.Open strConnection
    Set RS = objConnection.Execute(strQuery)
    
    Sheets("Sayfa2").Range("A2").CopyFromRecordset RS
    
    objConnection.Close
    Set RS = Nothing
    Set objConnection = Nothing
End Sub
 
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@Haluk Bey teşekkür ederim. Kolaylıklar.
 
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@Haluk Hocam bilgilendirmeyi eksik yapmışım. Malzeme No aynı olan ve MM - MZ Malzeme Adı olanları sadece aktarmasını istiyorum. Kusura bakmayın. Kodu günceller misiniz.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Aşağıdaki kodun ürettiği tablo, size aradıklarınızı bulmanızda kolaylık sağlayacaktır.

Kod:
Sub Test2()
    'Haluk - 13/11/2018
    Dim objConnection As Object
    Dim strConnection As String
    Dim strQuery As String
    Dim RS As Object
    
    Sheets("Sayfa2").Range("A2:G" & Rows.Count) = ""
    
    Set objConnection = CreateObject("ADODB.Connection")
    
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                    "Data Source='" & ThisWorkbook.FullName & "';" & _
                    "Extended Properties=""Excel 12.0 Macro;"";"

    strQuery = "Select * from [Sayfa1$] " & _
               "where [Malzeme No] in " & _
               "( " & _
               "select [Malzeme No] from [Sayfa1$] group by [Malzeme No] having count([Malzeme No]) > 1" & _
               ") " & _
               "and ([Malzeme Adı]='MM' or [Malzeme Adı]='MZ')"
    
    objConnection.Open strConnection
    Set RS = objConnection.Execute(strQuery)
    
    Sheets("Sayfa2").Range("A2").CopyFromRecordset RS
    
    objConnection.Close
    Set RS = Nothing
    Set objConnection = Nothing
End Sub
.
 
Son düzenleme:
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@Haluk Bey teşekkürler.
 
Üst