اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

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

مثال

لدى حساب اسمه محمود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
قام بنشر

بارك الله فيك اخى الكريم استاذى 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