• DİKKAT

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

Formül Yardım

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
208
Excel Vers. ve Dili
Excel 2021
Kod:
son = Range("A" & Rows.Count).End(xlUp).Row

ws = Cells.Find(What:="STOK KODU", After:=Cells(1, 1), SearchOrder:=xlRows, SearchDirection:=xlPrevious).Row + 1

rt = ActiveSheet.Name
X = rt & "$" & "L" & ws & ":M" & son

Dim con As Object, rs As Object, sorgu As String

Set con = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")

con.Open "provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=no"""

sorgu = "SELECT f2 as fx, Sum(f1) AS gx FROM [" & X & "] GROUP BY f2"
rs.Open sorgu, con, 1, 3
i = 1
Do Until rs.EOF
    Range("A" & son + i) = rs("fx")
    Range("B" & son + i) = Format(rs("gx"), "currency")
    Range("C" & son + i) = Format(rs("gx") / WorksheetFunction.Sum(Range("L" & ws, "L" & son)), "PERCENT")
    i = i + 1
    rs.MoveNext
Loop
Yukarıdaki kod ile ekli dosyada, listeden toplam alıyorum. Listedeki hücrelerin sutunları sabit, satır numaraları değişken "ws" ile o nedenle arama yaptım. Sorun şu, elde ettiğim değerler sabit bir sayı. Listede adet değiştirdiğimde tekrar butona basmam gerekiyor. Bu işlemin sonucunun hücreye formül şeklinde yazdırmak istiyorum.
 

Ekli dosyalar

Hücre de değişiklik oldu mu otomatik kodlar çalışacak.
Aşağıdaki Kodları Sayfa adına sağ tıklayıp kodları görüntüle deyip içine yapıştırın.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ss As Range


    Set ss = Range("H6:H50000")

If Not Application.Intersect(ss, Range(Target.Address)) _
           Is Nothing Then

son = Range("A" & Rows.Count).End(xlUp).Row

ws = Cells.Find(What:="STOK KODU", After:=Cells(1, 1), SearchOrder:=xlRows, SearchDirection:=xlPrevious).Row + 1

rt = ActiveSheet.Name
X = rt & "$" & "L" & ws & ":M" & son

Dim con As Object, rs As Object, sorgu As String

Set con = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")

con.Open "provider=Microsoft.ACE.OLEDB.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=no"""

sorgu = "SELECT f2 as fx, Sum(f1) AS gx FROM [" & X & "] GROUP BY f2"
rs.Open sorgu, con, 1, 3
i = 1
Do Until rs.EOF
    Range("A" & son + i) = rs("fx")
    Range("B" & son + i) = Format(rs("gx"), "currency")
    Range("C" & son + i) = Format(rs("gx") / WorksheetFunction.Sum(Range("L" & ws, "L" & son)), "PERCENT")
    i = i + 1
    rs.MoveNext
Loop
        

End If
End Sub
 
ilginiz için teşekkür ederim ama sorun kodun hücre değişikliğinde çalışması değil, Ado ile yaptığım işlemin hücrelere formül şeklinde geçmesi. Kodu nasıl bir işlem sonucuna ulaşmak istediğim için verdim.
 
Makro yerine ETOPLA kullansanız olmuyor mu?
 
Bu Dosyayı başka bir dosyadan dışa aktarım şeklinde oluşturuyorum. Ana dosya tüm verileri accessten alıyor. Bu dosyayı istediğim yerde kendi oluşturuyor. Örnek dosya tek bir ürün için. Normalde alt alta devam eden birçok ürün var. O yüzden her ürünün altına rapor yazabilmek için ve çıktı dosyasında yaptığım değişiklileri görebilmek için formül olarak ihtiyacım var. Bildiğim kadarıyla makro ile makrolu bir excel dosyası oluşturulamıyor.
 
Geri
Üst