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

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

قام بنشر

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

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

تجميع بيانات.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