• DİKKAT

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

Aktif dosyasındaki makroya Ozet dosyası için ekleme

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,903
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
Aktif dosyasındaki makroya Ozet dosyasındaki D ve E sütunları için ÇOKEĞERSAY fonksiyonunun görevini üstlenecek eklemeye yardım etmeniz mümkün mü, lütfen?
Saygılarımla
 

Ekli dosyalar

Merhaba

Bu şekilde deneyiniz.
Kod:
Sub Özetkayıt()
    Dim s1 As Worksheet: Dim sd As Object
    Dim a As Variant: Dim liste As Variant
    Dim i As Long: Dim b()
        Set s1 = Sheets("Sayfa1")
        son = s1.Cells(Rows.Count, 1).End(xlUp).Row
        Set sd = CreateObject("scripting.dictionary")
            a = s1.Range("A1:E" & son)
            ReDim b(1 To UBound(a), 1 To 5)
                For i = 1 To UBound(a)
                    If a(i, 1) <> "" Then
                        liste = a(i, 3)

                        If Not sd.exists(liste) Then
                            k = k + 1
                            sd.Add liste, k
       
                            b(k, 1) = a(i, 2)
                            b(k, 2) = a(i, 3)
                            b(k, 3) = a(i, 5)
                            b(k, 4) = 0
                            b(k, 5) = 0
                        End If
                        If a(i, 4) = "İç" Then
                            b(sd.Item(liste), 4) = b(sd.Item(liste), 4) + 1
                        ElseIf a(i, 4) = "Dış" Then
                            b(sd.Item(liste), 5) = b(sd.Item(liste), 5) + 1
                        End If
                       
                    End If
                Next i
            Workbooks.Open ("C:\Users\Hp\IGC\Desktop\Ozet.xlsx")
        Sheets("Sayfa1").Select
            Range("a1").Select
            Columns("A:E").ClearContents
            Range("A1").Resize(sd.Count, 5) = b
        [D1] = "İç"
        [E1] = "Dış"
End Sub
 
Sayın Ömer Hocam,
İlginize çok teşekkür ederim.
Saygılarımla
 
Sayın Ömer Hocam,
Ozet dosyasında E ve D sütunlarındaki değerlerin farkını "Kalan" adı altında F sütununa yazdırabilir miyiz? Ben şöyle bir ekleme yaptım. Daha pratik bir çözüm olabilir. Onu da öğrenirsem makbule geçer.
Kod:
        [F1] = "Kalan"
        
        Range("F2").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]-RC[-1]"
    
        son = ""
        son = Cells(Rows.Count, "A").End(3).Row
        
    Range("F2").Select
    Selection.AutoFill Destination:=Range("F2:F" & son)
    Columns("F:F").EntireColumn.AutoFit
    Range("F2:F" & son).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G2").Select
    Application.CutCopyMode = False
Saygılarımla
 
Sayın Ömer Hocam,
Kod:
        [F1] = "Kalan"
        
        son = ""
        son = Cells(Rows.Count, "A").End(3).Row
        
        Range("F2").Select
            If Cells(1 + x, 5) <> "" Then
                For x = 1 To son - 1
                    Cells(1 + x, 6) = Cells(1 + x, 5) - Cells(1 + x, 4)
                Next x
            End If
Eklediğim parçayı bu hale getirdim. Daha farklı olur mu, bilemiyorum?
Saygılarımla
 
Sorunuzu tam olarak anlayamadım, istediniz bu mu?
Kod:
Sub Özetkayıt()
    Dim s1 As Worksheet: Dim sd As Object
    Dim a As Variant: Dim liste As Variant
    Dim i As Long: Dim b()
        Set s1 = Sheets("Sayfa1")
        son = s1.Cells(Rows.Count, 1).End(xlUp).Row
        Set sd = CreateObject("scripting.dictionary")
            a = s1.Range("A1:E" & son)
            ReDim b(1 To UBound(a), 1 To 6)
                For i = 1 To UBound(a)
                    If a(i, 1) <> "" Then
                        liste = a(i, 3)

                        If Not sd.exists(liste) Then
                            k = k + 1
                            sd.Add liste, k
     
                            b(k, 1) = a(i, 2)
                            b(k, 2) = a(i, 3)
                            b(k, 3) = a(i, 5)
                            b(k, 4) = 0
                            b(k, 5) = 0
                        End If
                        If a(i, 4) = "İç" Then
                            b(sd.Item(liste), 4) = b(sd.Item(liste), 4) + 1
                        ElseIf a(i, 4) = "Dış" Then
                            b(sd.Item(liste), 5) = b(sd.Item(liste), 5) + 1
                        End If
                        b(sd.Item(liste), 6) = b(sd.Item(liste), 5) - b(sd.Item(liste), 4)
                    End If
                Next i
            Workbooks.Open ("C:\Users\Hp\IGC\Desktop\Ozet.xlsx")
        Sheets("Sayfa1").Select
            Range("a1").Select
            Columns("A:F").ClearContents
            Range("A1").Resize(sd.Count, 6) = b
        [D1] = "İç"
        [E1] = "Dış"
        [F1] = "Kalan"
End Sub
 
Sayın Ömer Hocam,
Çok teşekkür ederim.
Saygılarımla
 
Geri
Üst