اذهب الي المحتوي
أوفيسنا

احتاج كود تجميع المتكرر فى شيت اخر


إذهب إلى أفضل إجابة Solved by محي الدين ابو البشر,

الردود الموصى بها

السلام عليكم اخوانى الافاضل

احتاج كود لجمع المتكرر فى شيت اخر

مثال

لدى حساب اسمه محمود1  عمود له به5 ومنه2 والرصيد3

ومحمود1 عمود له به4 ومنه1 والرصيد3

اريد جمعهم فى شيت اخر ليكون

الحساب محمود1 له9ومنه3الرصيد6

والتوضيح بالشيت بارك الله فيكم اخوانى الاساتذة

 

جمع المكرر.xlsx

رابط هذا التعليق
شارك

تفضل أخي الكريم

Sub test()
    Dim A As Variant: Dim w As Variant
    Dim i As Long: Dim ii As Long
    A = Cells(1).CurrentRegion
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(A)
            If Not .exists(A(i, 1)) Then
                .Add A(i, 1), Array(A(i, 1), A(i, 2), A(i, 3), A(i, 4))
            Else
                w = .Item(A(i, 1))
                For ii = 1 To UBound(w)
                    w(ii) = w(ii) + A(i, ii + 1)
                Next
                .Item(A(i, 1)) = w
            End If
        Next
        Cells(6, 7).Resize(.Count, UBound(A, 2)) = Application.Index(.items, 0, 0)
    End With
End Sub

 

جمع المكرر.xlsm

  • Like 2
رابط هذا التعليق
شارك

استاذى الفاضل اخى الكريم محي الدين ابو البشر

زادك الله من فضله وكرمه الكود ممتاز يعمل بكفاءة ينقصه شئ بسيط ان يتم التنفيذ فى SHEEt2

ربنا يراضيك يارب ان شاء الله

احترامى وتقديرى لشخصك الكريم اخى

رابط هذا التعليق
شارك

بارك الله فيك اخى الكريم استاذى alihgrvdad123

زادك الله من فضله وكرمه معلش اثقل عليك فى شرح للحلقة التكرارية التى ستتغير فى الكود فى حالة

تغير ترتيب الاعمدة لكى استطيع الاستفادة من الكود فى شيت1 اما شيت 2 الخلاصة كما هو  

غيرت فى الكود فى هذا الجزء ولكن فشلت اطمع فى شرح هذا الجزء بارك الله فيك اخى

كيف يتك تحديد الاعمدة

                .Add A(i, 4), Array(A(i, 9), A(i, 10), A(i, 11)

احترامى وتقديرى وخالص دعائى

جمع المكرر (1).xlsm

رابط هذا التعليق
شارك

استاذى الفاضل محي الدين ابو البشر

بارك الله فيك اخى الكريم

كنت احتاج شرح الجزء المسئول فى الكود عن تغير مكان الاعمدة لكى اقوم بالتعديل على المرفق بالاعلى اخى الكريم 

زادك الله من فضله وكرمه اشكرك

جمع المكرر (1).xlsm

رابط هذا التعليق
شارك

أخي العزيز

البداية تبدأ من المصفوفة A 

بدل

  A = Cells(1).CurrentRegion

يجب أن تكون

    A = Cells(1, 1).Resize(Cells(Rows.Count, 4).End(xlUp).Row, 11)

ومن ثم يجب استبدال كل A(i,1)     بـ A(i,4)

وبما أنك الغيت A(i,4) من المصفوفة Array(A(i, 9), A(i, 10), A(i, 11))

فيجب إضافة سطر آخر في النهاية 

Sheets("الخلاصة").Cells(1, 1).Resize(.Count) = Application.Transpose(.keys)

على كل مبين بالكود التالي

Sub test()
    Dim A As Variant: Dim w As Variant
    Dim i As Long: Dim ii As Long
'    A = Cells(1).CurrentRegion
    A = Cells(1, 1).Resize(Cells(Rows.Count, 4).End(xlUp).Row, 11)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(A)
            If Not .exists(A(i, 4)) Then
                .Add A(i, 4), Array(A(i, 9), A(i, 10), A(i, 11))
            Else
                w = .Item(A(i, 4))
                For ii = 0 To UBound(w)
                    w(ii) = w(ii) + A(i, ii + 9)
                Next
                .Item(A(i, 4)) = w
            End If
        Next
        '
         Sheets("الخلاصة").Cells(1, 1).Resize(.Count) = Application.Transpose(.keys)
        Sheets("الخلاصة").Cells(1, 2).Resize(.Count, 3) = Application.Index(.items, 0, 0)
        Sheets("الخلاصة").Select
    End With
End Sub

أرجو أن أكون قد أفدتك وجاهز لأي سؤال

جمع المكرر (1) (2).xlsm

  • Like 2
رابط هذا التعليق
شارك

  • 2 weeks later...

اخى فى الله استاذى محي الدين ابو البشر

  • ذادك الله من فضله ورعاك اللهم امين
  • اخى حاولت توظيف وتعديل الكود الرائع لتعديل الخلاصة الى
  • Untitled.png.48c106842ae31111edf1fffa6af6e1dd.png
  • بارك الله فيك اخى الكريم وحفظك وزادك من فضله اللهم امين يارب
  • تقبل شكرى واحترامى وتقديرى
  •  
رابط هذا التعليق
شارك

Sub test()
    Dim A As Variant: Dim w As Variant
    Dim i As Long: Dim ii As Long
    A = Cells(1, 1).Resize(Cells(Rows.Count, 4).End(xlUp).Row, 11)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(A)
            If Not .exists(A(i, 6) & "#" & A(i, 4)) Then
                .Add A(i, 6) & "#" & A(i, 4), Array(A(i, 9), A(i, 10), A(i, 11))
            Else
                w = .Item(A(i, 6) & "#" & A(i, 4))
                For ii = 0 To UBound(w)
                    w(ii) = w(ii) + A(i, ii + 9)
                Next
                .Item(A(i, 6) & "#" & A(i, 4)) = w
            End If
        Next
         Sheets("الخلاصة").Cells(1, 1).Resize(.Count) = Application.Transpose(.keys)
         Sheets("الخلاصة").Cells(1, 1).Resize(.Count).TextToColumns Destination:=Range("A1"), OtherChar:="#", FieldInfo:=Array(Array(2, 1))
        Sheets("الخلاصة").Cells(1, 3).Resize(.Count, 3) = Application.Index(.items, 0, 0)
        Sheets("الخلاصة").Select
    End With
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

اتقدم اليك بخالص العرفان والشكر استاذنا محي الدين ابو البشر

اعتذر الكود لم يفى بالغرض النتيجة المراد الحصول عليها كما بالصورة

Untitled.png.e66e4ede7c4d0e89a0e200aa092e0e98.png

بشيت الخلاصة  اسف تعديل تصحيح ما بالصورة هادى1 محمد100 له150

خالص شكرى وتقديرى وعرفان بالجميل والدعاء من قلبى لك اخى

 

رابط هذا التعليق
شارك

هذه غلطة اسف اخى 

الصح 150.   100.    50

اكثر الله خيرك اخى الكريم وجزاك الله خيرا يارب

اخى فى الله استاذى محي الدين ابو البشر

  • ذادك الله من فضله ورعاك اللهم امين
  • اخى حاولت توظيف وتعديل الكود الرائع لتعديل الخلاصة الى
  • Untitled.png.48c106842ae31111edf1fffa6af6e1dd.png
  • بارك الله فيك اخى الكريم وحفظك وزادك من فضله اللهم امين يارب
  • تقبل شكرى واحترامى وتقديرى
  • للرفع رفع الله قدركم
  •  
رابط هذا التعليق
شارك

  • أفضل إجابة

ماذا عن هذا

Sub test()
    Dim A As Variant: Dim w As Variant
    Dim i As Long: Dim ii As Long
    With Sheet1
    A = .Cells(1, 1).Resize(.Cells(Rows.Count, 4).End(xlUp).Row, 11)
    End With
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(A)
            If Not .exists(A(i, 6) & "#" & A(i, 4)) Then
                .Add A(i, 6) & "#" & A(i, 4), Array(A(i, 9), A(i, 10), A(i, 11))
            Else
                w = .Item(A(i, 6) & "#" & A(i, 4))
                For ii = 0 To UBound(w)
                    w(ii) = w(ii) + A(i, ii + 9)
                Next
                .Item(A(i, 6) & "#" & A(i, 4)) = w
            End If
        Next
        Sheet2.Cells.ClearContents
         Sheet2.Cells(1, 1).Resize(.Count) = Application.Transpose(.keys)
         Sheet2.Cells(1, 1).Resize(.Count).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Other:=True, OtherChar:="#", FieldInfo:=Array(Array(2, 1))
       Sheet2.Cells(1, 3).Resize(.Count, 3) = Application.Index(.items, 0, 0)
        Sheet2.Select
    End With
End Sub

 

  • Like 3
رابط هذا التعليق
شارك

تسلم وتعيش استاذى 

محي الدين ابو البشر

  • تسلم ايدك ربنا يرضى عنك اخى الكريم
  • بارك الله فيك اخى يعجز لسانى عن شكرك والله اشكرك اخى الكريم جدا 
  • تقبل حبى واحترامى وتقديرى لك اخى فى الله
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information