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

طلب مساعدة في كود او معادلة تجميع بيانات


إذهب إلى أفضل إجابة Solved by ياسر خليل أبو البراء,

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

السلام عليكم اما بعد

ارجو المساعدة في عمل كود او معادلة لتجميع بيانات في جدول واحد بدلالة اسم القسم و اسم الصفحة لفهم المطلوب ارجو الاطلاع على الملف المرفق ولكم مني خالص عبارات الشكر و التقدير

تجميع بيانات.rar

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

  • أفضل إجابة

وعليكم السلام أخي الكريم زياد

جرب الكود التالي في حدث ورقة العمل المراد التجميع فيها

قم بكتابة القسم في العمود الثاني ..

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws      As Worksheet
    Dim xf      As Variant
    
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row > 3 And Target.Column = 2 Then
        Application.EnableEvents = False
            If Target = "" Then Target.Offset(, -1).ClearContents: Target.Offset(, 1).Resize(, 6).ClearContents: GoTo Skipper
            For Each ws In ThisWorkbook.Worksheets(Array("وحدة الانتاج", "وحدة النقل", "وحدة التوزيع"))
                xf = Application.Match(Target, ws.Columns(2), 0)
                If IsNumeric(xf) Then
                    Target.Offset(, -1) = Target.Row - 3
                    Target.Offset(, ws.Index * 2 - 1) = ws.Cells(xf, 3)
                    Target.Offset(, ws.Index * 2) = ws.Cells(xf, 4)
                End If
            Next ws
Skipper:
        Application.EnableEvents = True
    End If
End Sub

 

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

48 دقائق مضت, ياسر خليل أبو البراء said:

وعليكم السلام أخي الكريم زياد

جرب الكود التالي في حدث ورقة العمل المراد التجميع فيها

قم بكتابة القسم في العمود الثاني ..


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws      As Worksheet
    Dim xf      As Variant
    
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row > 3 And Target.Column = 2 Then
        Application.EnableEvents = False
            If Target = "" Then Target.Offset(, -1).ClearContents: Target.Offset(, 1).Resize(, 6).ClearContents: GoTo Skipper
            For Each ws In ThisWorkbook.Worksheets(Array("وحدة الانتاج", "وحدة النقل", "وحدة التوزيع"))
                xf = Application.Match(Target, ws.Columns(2), 0)
                If IsNumeric(xf) Then
                    Target.Offset(, -1) = Target.Row - 3
                    Target.Offset(, ws.Index * 2 - 1) = ws.Cells(xf, 3)
                    Target.Offset(, ws.Index * 2) = ws.Cells(xf, 4)
                End If
            Next ws
Skipper:
        Application.EnableEvents = True
    End If
End Sub

 

بارك الله فيك استاذ ياسر كود ولا في الاحلام.

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

بارك الله فيك أخي زياد .. والشكر لك لتوضيح المسألة بشكل جيد وإرفاق ملف مبسط يعبر عن المطلوب ، وهذا ما أتمناه من جميع الاعضاء الذين يطرحون الموضوعات

 

يرجى عدم اقتباس الردود الطويلة بهذا الشكل .. كما يرجى اختيار "أفضل إجابة" ليظهر الموضوع منتهي

الحمد لله أن تم المطلوب على خير والحمد لله الذي بنعمته تتم الصالحات

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

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

    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row > 10 And Target.Column = 2 Then
        Application.EnableEvents = False
            If Target = "" Then Target.Offset(, -1).ClearContents: Target.Offset(, 1).Resize(, 20).ClearContents: GoTo Skipper
            For Each ws In ThisWorkbook.Worksheets(Array("وحدة الانتاج", "وحدة النقل", "وحدة التوزيع",.....هنا اسماء الصفحات))
                xf = Application.Match(Target, ws.Columns(2), 0)
                If IsNumeric(xf) Then
                    Target.Offset(, -1) = Target.Row - 10
                    Target.Offset(, ws.Index * 2 - 1) = ws.Cells(xf, 10)
                    Target.Offset(, ws.Index * 2) = ws.Cells(xf, 11)
                End If
            Next ws
Skipper:
        Application.EnableEvents = True
    End If
End Sub

 

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

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

وهو تغيير قيمة عدد الاعمدة في السطر التالي مع ضرورة ادراج اسم الصفحات الاضافية ....مليون شكر و تقدير لك استاذ

            If Target = "" Then Target.Offset(, -1).ClearContents: Target.Offset(, 1).Resize(, 10).ClearContents: GoTo Skipper'هنا عدد الاعمدة الاضافية
            For Each ws In ThisWorkbook.Worksheets(Array("وحدة النشاط", "وحدة الانتاج", "وحدة النقل", "وحدة التوزيع"......'هنا اسماء الصفحات))

هل يمكن استاذ ياسر تعديل بسيط مثلا عوض ادراج اسماء الصفحات وضع كود مثلا من الصفحة 1 الى الصفحة 10

تم تعديل بواسطه زياد عبد الجليل
رابط هذا التعليق
شارك

ارفق ملف .. لأن هيكلة الملف الأول كما فهمت تعتمد على وجود ثلاثة أوراق عمل ولكل ورقة عمودين بالاسم واللقب ..أما بعد زيادة أوراق العمل فيهمني أن أرى الهيكلة الجديدة مع وضع بعض النتائج المتوقعة

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

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.

×
×
  • اضف...

Important Information