• DİKKAT

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

Soru Vba sql gruplama ve virgülle ayırma

  • Konbuyu başlatan Konbuyu başlatan emreeyy
  • Başlangıç tarihi Başlangıç tarihi
Katılım
20 Mayıs 2016
Mesajlar
86
Excel Vers. ve Dili
2010
Merhaba ekteki gibi bir excel dosyam mevcut,

sql kullanarak bir pivot tabloyu çekiyorum.

çektiğim hali sayfa1 de mevcut fakat çekerken gruplayarak çekiyorum grupladıktan sonrada grupladığım değerlerin bazılarının virgülle ayrılması mümkün müdür?

örnek sql kodumda sadece basit bir select sorgusu mevcut bunu gruplamak için nasıl bir yol izleyebilirim ?

Select çektiğim "ham hali" isimli sayfada birebir başlıklar(kolonlar) aynıdır.

Örnek dosyadaki A2:H10 arası ham hali dosyasıdır.

A13:H18 arası ise yapmak istediğim halidir.


Kod:
Sub enjeksiyon()


    Dim WB1 As String
    Dim strConnection As String
    Dim strQuery As String
    Dim objConnection As Object

    Dim RS As Object
    
    
    
    
    WB1 = ThisWorkbook.FullName
    
    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 [" & WB1 & "].[HAM HALİ$A11:n5000] group by [Stok Kodu]"
    
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.CursorLocation = 3
    
    
    
    
    objConnection.Open strConnection
    Set RS = objConnection.Execute(strQuery)
    
        'A2 Başlıklarını Ekle
        'For i = 0 To RS.Fields.Count - 1
        '    Cells(1, i + 1) = RS(i).Name
        'Next
        'A2 Verilerini Ekle
        Sheets("de").Range("A2").CopyFromRecordset RS
        
        

End Sub
 

Ekli dosyalar

Merhaba,

Bu tarz bir işlemi bildiğim kadarıyla ADO ile yapamazsınız. Bunun yerine normal makro kodları kullanabilirsiniz. Fakat burada da gruplandırma kuralını belirlemek gerekir.
 
ADO ile bir alternatif ekli dosyadadır...

.
 

Ekli dosyalar

Haluk bey ustalığını konuşturmuş.

Elinize sağlık..
 
Estağfurullah Korhan Bey.

.
 
ADO ile bir alternatif ekli dosyadadır...

.


Hocam merhabalar, ellerinize sağlık süper yazmışsınız.

Ek sorularım olacak cevaplarsanız sevinirim.

Kod:
arrStok = Array("a", "b", "c", "d", "e")

burada ne kadar stok kodum varsa bu dizi içerisine tanımlamam mı lazım?


Kod:
If j <= 3 Then
                myArr = objRS.GetRows(, , j)
                Sheets("Rapor").Cells(i, j + 1) = Join(Application.Index(myArr, 0), ", ")
            Else
                Sheets("Rapor").Cells(i, j + 1) = objRS(j)
End If

burada j<=3 koşulunda 3'ten küçük eşit olan tekrara mı gruplandırıp virgülle ayırıyor.2 yapsam minimum 2 taneyi mi gruplandırıp virgülle ayıracak?


Vakit ayırdığınız için tekrar teşekkür ederim.
 
Ek sorularım olacak cevaplarsanız sevinirim.

Kod:
arrStok = Array("a", "b", "c", "d", "e")

burada ne kadar stok kodum varsa bu dizi içerisine tanımlamam mı lazım?


Evet, aynen dediğiniz gibi......

Ancak, sonradan bir revizyon yapmıştım.... onu da aşağıdaki dosyada görebilirsiniz.

Bu revizyonda "Sayfa1" isimli sayfada "Stok Kodu" başlığı altındaki alandaki stok kodları otomatik olarak algılanıp diziye aktarılacak. Yani, sizin stok kodlarını VBA kodu içindeki diziye yazma ihtiyacınız kalmayacak.

Ekli dosyayı inceleyebilirsiniz....


.
 

Ekli dosyalar

Evet, aynen dediğiniz gibi......

Ancak, sonradan bir revizyon yapmıştım.... onu da aşağıdaki dosyada görebilirsiniz.

Bu revizyonda "Sayfa1" isimli sayfada "Stok Kodu" başlığı altındaki alandaki stok kodları otomatik olarak algılanıp diziye aktarılacak. Yani, sizin stok kodlarını VBA kodu içindeki diziye yazma ihtiyacınız kalmayacak.

Ekli dosyayı inceleyebilirsiniz....


.


Çok teşekkür ederim hocam. Büyüksünüz
 
Geri
Üst