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

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

قام بنشر

في الملف المرفق يوجد في شيت "الاعمال" مجموعة اعمال مثل الحفر و الخرسانة العادية والخرسانة المسلحة 

اريد ان يقوم بعمل استعداء اجمالي كل بند  في كل مبنى فمثلا 

المبنى1 بند الحفر والردم = 1000      وفي المبنى2 بند الحفر والردم = 1500 

الملف المرفق يوضح المطلوب .. انتبه من فضلك , طالما انك تريد طلبك بالأكواد .فكان لزاما عليك رفع الملف بإمتداد Xlsm ... فقد تـــم اعادة رفع الملف بهذا الإمتداد

ملحص.xlsm

قام بنشر

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

أخي الكريم هل هذا ما تريد الوصول إليه 

فإن لم يكن يرجى التوضيح اكثر

تم استخدام الدالة Sumif للوصول إلى النتائج لكن بعد إلغاء دمج الخلايا في ملف البيانات

كما يلي:

ملحص.xlsx

  • Like 2
قام بنشر

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

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

  • Like 3
  • أفضل إجابة
قام بنشر
Sub Test()
    Dim ws As Worksheet, sh As Worksheet, rRange As Range, rCell As Range, rng As Range, t As Double, iRow As Long, r As Long, c As Long
    Application.ScreenUpdating = False
        Set ws = ThisWorkbook.Worksheets(2)     'Tasks
        Set sh = ThisWorkbook.Worksheets(1)     'Summary
        iRow = 4: r = iRow
        With sh.Rows(iRow + 1 & ":" & Rows.Count)
            .ClearContents: .Borders.Value = 0
        End With
        Set rRange = ws.Range("B5:B" & ws.Cells(Rows.Count, "B").End(xlUp).Row)
        Set rCell = rRange.Cells(1, 1)
        Do
            If rCell.Value = Chr(199) & Chr(225) & Chr(199) & Chr(204) & Chr(227) & Chr(199) & Chr(225) & Chr(237) Or rCell.Value = Empty Then GoTo NXT
            r = r + 1: t = 0
            sh.Cells(r, 1).Value = r - iRow
            sh.Cells(r, 2).Value = rCell.Value
            For c = 3 To 16
                Set rng = rCell.Offset(, c - 2).Resize(rCell.MergeArea.Rows.Count)
                t = Application.WorksheetFunction.Sum(rng)
                If t = 0 Then sh.Cells(r, c).Value = Empty Else sh.Cells(r, c).Value = t
            Next c
NXT:
            Set rCell = rCell.Offset(1, 0)
            Set rng = Nothing
        Loop Until (rCell.Row > (rRange.Row + rRange.Rows.Count - 1))
        With sh.Rows(iRow + 1 & ":" & r)
            .Borders.Value = 1
        End With
    Application.ScreenUpdating = True
End Sub

 

  • Like 4
  • Thanks 2
قام بنشر

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

ما شاء الله بارك الله أخي الحبيب @lionheart حل رائع ، مذهل ، أحسنتم بارك الله بكم
تقبل تحياتي العطرة لشخصكم الكريم.

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

  • Like 1
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information