Tekrar Eden Fatura Numaralarını Tek Satırda Toplama

renaksk

Altın Üye
Katılım
21 Aralık 2023
Mesajlar
6
Excel Vers. ve Dili
2007 Tr
Altın Üyelik Bitiş Tarihi
17-02-2025
Merhaba. Makro bilgim yok o yüzden sizden yardım rica ediyorum.

Ekteki dosyadaki sayfa 1 deki verilerin aynı fatura numarasına sahip olanların sayfa 2deki gibi toplamasını nasıl yapabilirim. Forumda benzer konular mevcut ancak toplamda tek ürün adı alınmış. Dosyamda ise ürün adı ve miktar alanları virgülle ayrılmış olarak yan yana yazılması gerekiyor. Şimdiden teşekkür ederim.
 

Ekli dosyalar

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Aşağıdaki kodu deneyiniz.
PHP:
Sub kod()
Dim s1 As Worksheet, s2 As Worksheet
Dim a As Long, sn As Long, x As Long
Dim s As Object
Dim ayr As String

Set s1 = Worksheets("Sayfa1")
Set s2 = Worksheets("Sayfa2")
Set s = CreateObject("Scripting.Dictionary")

ayr = "; "
sn = s1.Cells(Rows.Count, "B").End(3).Row
ReDim dz(1 To sn, 1 To 10)

For a = 2 To sn
    If s.exists(s1.Cells(a, "B").Value) Then
        x = s(s1.Cells(a, "B").Value)
        If InStr(1, dz(x, 5) & ayr, s1.Cells(a, "E") & ayr) = 0 Then
            dz(x, 5) = dz(x, 5) & ayr & s1.Cells(a, "E")
            dz(x, 6) = dz(x, 6) & ayr & Format(WorksheetFunction.SumIfs(s1.Range("F2:F" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"), s1.Range("E2:E" & sn), s1.Cells(a, "E")), "0.00")
            If InStr(1, dz(x, 8) & ayr, s1.Cells(a, "I") & ayr) = 0 Then dz(x, 8) = dz(x, 8) & ayr & s1.Cells(a, "I")
        End If
    Else
        x = s.Count + 1
        s.Add s1.Cells(a, "B").Value, x
        dz(x, 1) = s1.Cells(a, "A")
        dz(x, 2) = s1.Cells(a, "B")
        dz(x, 3) = s1.Cells(a, "C")
        dz(x, 4) = s1.Cells(a, "D")
        dz(x, 5) = s1.Cells(a, "E")
        dz(x, 6) = WorksheetFunction.SumIfs(s1.Range("F2:F" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"), s1.Range("E2:E" & sn), s1.Cells(a, "E"))
        dz(x, 7) = WorksheetFunction.SumIfs(s1.Range("H2:H" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"))
        dz(x, 8) = s1.Cells(a, "I")
        dz(x, 9) = WorksheetFunction.SumIfs(s1.Range("J2:J" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"))
        dz(x, 10) = s1.Cells(a, "K")
    End If
Next
s2.Range("A2").Resize(UBound(dz), UBound(dz, 2)).Value = dz
End Sub
 

renaksk

Altın Üye
Katılım
21 Aralık 2023
Mesajlar
6
Excel Vers. ve Dili
2007 Tr
Altın Üyelik Bitiş Tarihi
17-02-2025
Merhaba,
Aşağıdaki kodu deneyiniz.
PHP:
Sub kod()
Dim s1 As Worksheet, s2 As Worksheet
Dim a As Long, sn As Long, x As Long
Dim s As Object
Dim ayr As String

Set s1 = Worksheets("Sayfa1")
Set s2 = Worksheets("Sayfa2")
Set s = CreateObject("Scripting.Dictionary")

ayr = "; "
sn = s1.Cells(Rows.Count, "B").End(3).Row
ReDim dz(1 To sn, 1 To 10)

For a = 2 To sn
    If s.exists(s1.Cells(a, "B").Value) Then
        x = s(s1.Cells(a, "B").Value)
        If InStr(1, dz(x, 5) & ayr, s1.Cells(a, "E") & ayr) = 0 Then
            dz(x, 5) = dz(x, 5) & ayr & s1.Cells(a, "E")
            dz(x, 6) = dz(x, 6) & ayr & Format(WorksheetFunction.SumIfs(s1.Range("F2:F" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"), s1.Range("E2:E" & sn), s1.Cells(a, "E")), "0.00")
            If InStr(1, dz(x, 8) & ayr, s1.Cells(a, "I") & ayr) = 0 Then dz(x, 8) = dz(x, 8) & ayr & s1.Cells(a, "I")
        End If
    Else
        x = s.Count + 1
        s.Add s1.Cells(a, "B").Value, x
        dz(x, 1) = s1.Cells(a, "A")
        dz(x, 2) = s1.Cells(a, "B")
        dz(x, 3) = s1.Cells(a, "C")
        dz(x, 4) = s1.Cells(a, "D")
        dz(x, 5) = s1.Cells(a, "E")
        dz(x, 6) = WorksheetFunction.SumIfs(s1.Range("F2:F" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"), s1.Range("E2:E" & sn), s1.Cells(a, "E"))
        dz(x, 7) = WorksheetFunction.SumIfs(s1.Range("H2:H" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"))
        dz(x, 8) = s1.Cells(a, "I")
        dz(x, 9) = WorksheetFunction.SumIfs(s1.Range("J2:J" & sn), s1.Range("B2:B" & sn), s1.Cells(a, "B"))
        dz(x, 10) = s1.Cells(a, "K")
    End If
Next
s2.Range("A2").Resize(UBound(dz), UBound(dz, 2)).Value = dz
End Sub

Çok teşekkür ederim. Oldu. Sağolun
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Siz de sağ olun.
İyi çalışmalar...
 
Üst