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

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

قام بنشر

 

 

السلام عليكم ورحمة الله وبركاتة

موضوعنا اليوم اردت ان تكون صيغتة صيغة عامة تخدم الكثير من موضوعات جداول البيانات وهو 

ادراج مجموع كل صفحة وايضا المجموع الكلي

وكنت قد قدمت هذا الموضوع منذ سنوات

وقد اعادت هذة الذكري الي ذهني احدي المشاركات منذ ايام قليلة

فبحثت عن الموضوع ولكني لم اجده

ثم بحثت في المنتديات الاجنبية لعلي اجد كود لهذا الموضوع

فلم اجد الا كود واحد فقط يغطى هذا الموضوع

وهو للمبرمج

Ole P. Erlandsen

منذ عام 1999

وهو كود وحيد لا يوجود غيره في اي منتدي عربي او اجنبي

حاولت تطويعة  (  من باب الاستسهال بدلا من كتابة كود جديد  )  ولكن صعب عليا تطويعه 

فتركت الموضوع

ثم امس ومضت لي فكرة بناء كود جديد فتوكلت علي الله

وكانت هذه النتيجة

الكود له 3 مدخلات يجب ضبطها وهي اول 3 سطور في الكود

 

'=========================================
First_Cel = "A1"                                       '  عنوان اول خلية في جدول البيانات
Count_Row_In_Page = 10                     '  عدد الصفوف في كل صفحة
Col_Total = "E"                                        '  عمود المجموع
'=========================================

 

انظر المرفقات

 

الكود

Option Base 1

Sub Subtotals_For_Each_Page()
'
'=======================================================================
First_Cel = "A1"                            ' عنوان اول خلية في جدول البيانات
Count_Row_In_Page = 10                      ' عدد الصفوف في كل صفحة
Col_Total = "E"                             ' عمود المجموع
'=========================================
Ttitle_1 = "اجمالـــي صفحـــة"
Ttitle_2 = "اجمالـــي الصفحـــات :"
'=======================================================================
ScreenOff
Dim Sh_Total_Page As Worksheet
Dim Rng As Range
Dim Arr()
Dim Arr_Page()
'=======================================================================
ActiveSheet.ResetAllPageBreaks
Maximum_Row = ActiveSheet.HPageBreaks(1).Location.Row - 3
If Count_Row_In_Page < 1 Or Count_Row_In_Page > Maximum_Row Then MsgBox "عدد الصفوف لكل صفحة من  1 الي    " & Maximum_Row: Exit Sub
'=======================================================================
Set Sh_Total_Page = Sheets("مجموع_الصفحات")
First_Col = Range(First_Cel).Column
Count_Col = Cells(Range(First_Cel).Row, Columns.Count).End(xlToLeft).Column
End_Row = Cells(Rows.Count, First_Col).End(xlUp).Row
Set Rng = Range(First_Cel).Offset(1)
Set Rng = Range(Rng, Cells(End_Row, Count_Col))
Arr = Rng
'=======================================================================
With Sh_Total_Page
    .Cells.Delete Shift:=xlUp
    Range(Range(First_Cel), Cells(Range(First_Cel).Column, Count_Col)).EntireColumn.Copy
    .Range("A1").Insert Shift:=xlToRight
    .Rows(Range(First_Cel).Offset(1).Row & ":" & Rows.Count).ClearContents
End With
'=======================================================================
Page_Counter = 1
Grand_Total = 0
Col_Total = Columns(Col_Total).Column
For x = LBound(Arr) To UBound(Arr) Step Count_Row_In_Page
    ReDim Arr_Page(Count_Row_In_Page + 1, Count_Col)
    Row_Offset = x
    Total_Page = 0
    For Row = 1 To Count_Row_In_Page
        Col_Counter = 0
        Total_Page = Total_Page + Arr(Row_Offset, Col_Total)
        For Col = 1 To Count_Col
            Col_Counter = Col_Counter + 1
            Arr_Page(Row, Col_Counter) = Arr(Row_Offset, Col_Counter)
        Next
        Row_Offset = Row_Offset + 1
        On Error Resume Next
    Next
    Grand_Total = Grand_Total + Total_Page
    '=======================================================================
    Arr_Page(Count_Row_In_Page + 1, 1) = Ttitle_1 & Page_Counter & " : "
    Arr_Page(Count_Row_In_Page + 1, Col_Counter) = Total_Page
    Page_Counter = Page_Counter + 1
    '=======================================================================
    With Sh_Total_Page
        End_Row = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        Set Rng = .Cells(End_Row, "A")
        Set Rng = Rng.Resize(Count_Row_In_Page + 1, Col_Total)
        Rng = Arr_Page
        End_Row = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        Range(.Cells(End_Row - 1, 1), .Cells(End_Row - 1, Count_Col)).Font.Bold = True
        Range(.Cells(End_Row - 1, 1), .Cells(End_Row - 1, Count_Col)).Font.ColorIndex = 5
    End With
    Erase Arr_Page
Next
With Sh_Total_Page
    End_Row = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    .Cells(End_Row, "A") = Ttitle_2
    .Cells(End_Row, Col_Total) = Grand_Total
    Range(.Cells(End_Row - 1, 1), .Cells(End_Row, Count_Col)).Font.Bold = True
    Range(.Cells(End_Row - 1, 1), .Cells(End_Row, Count_Col)).Font.ColorIndex = 5
    Range(.Cells(End_Row, 1), .Cells(End_Row, Count_Col)).Font.ColorIndex = 3
    .Select
End With
'=======================================================================
Every_Row = Count_Row_In_Page + 1
With ActiveSheet
    .ResetAllPageBreaks
    TotalPageBreaks = ActiveSheet.HPageBreaks.Count
    Lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
    For Row_Index = Every_Row + 2 To Lastrow Step Every_Row
        If Row_Index = Lastrow Then
            .HPageBreaks.Add Before:=.Cells(Row_Index + 1, 1)
        Else
            .HPageBreaks.Add Before:=.Cells(Row_Index, 1)
        End If
    Next
End With
TotalPageBreaks = ActiveSheet.HPageBreaks.Count
ActiveSheet.HPageBreaks(TotalPageBreaks).Delete
'=======================================================================
End_Row = Cells(Rows.Count, "A").End(xlUp).Row
Set Rng = Range(Range(First_Cel), Cells(End_Row, "A"))
Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
With Sh_Total_Page.PageSetup
    .PrintTitleRows = "$1:$1"
End With
End_Row = Cells(Rows.Count, "A").End(xlUp).Row + 1
Rows(End_Row & ":" & Rows.Count).Delete Shift:=xlUp
On Error GoTo 0
'=======================================================================
ScreenOn
'
End Sub

 

المرفقات

 

ادراج مجموع كل صفحة & المجموع الكلي.rar

 

 

  • Like 9
قام بنشر

 

الاخوة الاعزاء

سليم حاصبيا

ياسر خليل أبو البراء

محي الدين

ali haidar

بارك الله فيكم الاخوة الاعزاء

 

قام بنشر

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

اذا اردنا ان يكون المجموع ليس للعمود E فقط ولكن مثلا للعمود من B الى E  أو أعمدة متفرقة حسب الحاجة .. وشكرا لكل أخي العزيز مرة أخرى

  • Like 1
قام بنشر

 

الاخ مهند الزيدي

تم التعديل حسب طلبك 

الان يمكنك ان يكون المجموع ليس للعمود E فقط ولكن مثلا للعمود من B الى E أو أعمدة متفرقة حسب الحاجة 

ويجب تعديل المعطيان داخل الكود

 

'=========================================
First_Cel = "A1"                                       '  عنوان اول خلية في جدول البيانات
Count_Row_In_Page = 10                     '  عدد الصفوف في كل صفحة
Arr_Col_Total = Array(12, 5, 3)                         ' ارقام اعمدة المجموع بالنسبة الي الجدول وليس الأكسل
'=========================================

تم تعديل بعض الاخطاء في النسخة الاولي

فقط كانت لا تعمل اذا كان الجدول لا بيدأ من اول عمود

 

ادراج مجموع كل صفحة & المجموع الكلي_2.rar

 

  • Like 3
قام بنشر

اخى عمر

ابداعاتك متعدده ررررررررررررررررررررائئئئئئئئئئئئع

جزاك الله خيرا

وفقكم الله

قام بنشر

 

العزيز ياسر خليل أبو البراء

شكرا لك اخي

الاخ سعد عابد

شكرا لك اخي

 

اضافة بسيطة الي الملف لتسهيل تعديل مدخلات الجدول

 

ادراج مجموع كل صفحة & المجموع الكلي_3.rar

 

  • Like 1
  • 2 months later...

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