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

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

قام بنشر

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

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

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

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

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

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
×
×
  • اضف...

Important Information