saad abed قام بنشر مايو 7, 2013 قام بنشر مايو 7, 2013 اخوانى الافاضل لماذا لا تعمل الدالة داخل الكود وما هى الطريقة الصحيحة لاستخدامها فى الاكواد Sub saad() Application.ScreenUpdating = False On Error Resume Next Dim a, d, z As Range ww = Application.WorksheetFunction Set d = Sheets("saad").Range("c5:c1500") Set a = Sheets("saad").Range("e5:e1500") Set z = Sheets("saad").Range("b5:b1500") Y = Sheets("saad").Cells(Sheets("saad").Rows.Count, Sheets("saad").Range("a5:a1000").Column).End(xlUp).Row For i = 6 To Y Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5:c5")) Next i 1.rar
احمد عبد الناصر قام بنشر مايو 7, 2013 قام بنشر مايو 7, 2013 (معدل) السلام عليكم بداية هذا السطر يتخطى الاخطاء و بذلك لن تعلم ما او اين الخطأ بالظبط فمن الافضل حذفه ام لم يكن وضعه ضروري On Error Resume Next وهذا السطر اعتقد يجب ان يضاف له SET هكذا Set ww = Application.WorksheetFunction هذا لا بأس به لكن يمكن اختصاره ليصبح Y = Sheets("saad").Range("a" & Rows.Count).End(xlUp).Row اما بالنسبه لهذا فسوف يعمل لكن لاحظ ان عمود النتيجة هو C و C ايضا جزء من شروط المعادلة لا اعلم ان كان هذا مقصود Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5")) و هكذا يصبح الكود النهائي Sub saad() Set ww = Application.WorksheetFunction Set d = Sheets("saad").Range("c5:c1500") Set a = Sheets("saad").Range("e5:e1500") Set z = Sheets("saad").Range("b5:b1500") Y = Sheets("saad").Range("a" & Rows.Count).End(xlUp).Row For i = 6 To Y Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5")) Next i End Sub هذا و الله اعلم تحياتي تم تعديل مايو 7, 2013 بواسطه احمد عبد الناصر
saad abed قام بنشر مايو 7, 2013 الكاتب قام بنشر مايو 7, 2013 اخى احمد عبدالناصر اشكرك كل الشكر على شرحك ولكنى نفذت كل النصائح ولم يعمل الكود وارجو ممن يحاول فى الملف ان يغير اسم الورقة الى saad 1.rar
احمد عبد الناصر قام بنشر مايو 7, 2013 قام بنشر مايو 7, 2013 السلام عليكم معذرة لم انتبه للملف المرفق في البداية علي اي حال جرب هذه المحاولة Sub saad() Sheets("report").Range("b5:l1000").Clear Sheets("data").Range("k7:k" & Sheets("data").Range("k" & Rows.Count).End(xlUp).Row).Copy Sheets("report").Range("b5").PasteSpecial (xlPasteValuesAndNumberFormats) Sheets("data").Range("l8:l" & Sheets("data").Range("l" & Rows.Count).End(xlUp).Row).Copy Sheets("report").Range("c5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True Application.CutCopyMode = False r = Sheets("report").Range("b" & Rows.Count).End(xlUp).Row c = Sheets("report").Range("iv5").End(xlToLeft).Column Sheets("report").Range(Cells(6, 3), Cells(r, c)).FormulaR1C1 = "=SUMIFS(saad!C4,saad!C1,RC2,saad!C2,R5C)" Sheets("report").Range(Cells(6, 3), Cells(r, c)) = Sheets("report").Range(Cells(6, 3), Cells(r, c)).Value End Sub تحياتي 1++.rar 1
saad abed قام بنشر مايو 7, 2013 الكاتب قام بنشر مايو 7, 2013 اخى احمد عبدالناصر اشكرك كل الشكر هو المطلوب بالفعل جزاك الله خيرا
saad abed قام بنشر مايو 8, 2013 الكاتب قام بنشر مايو 8, 2013 اخى احمد هل ممكن تشرح تكوين المعادلة دى c4هى العمود الرابع c1هى العمود الاول c2هى العمود الثانى لان c هو collumn ما معنىrc2هل العمود الثانى فى اى صف ارجو التوضيح ولك الشكر FormulaR1C1 = "=SUMIFS(saad!C4,saad!C1,RC2,saad!C2,R5C)
احمد عبد الناصر قام بنشر مايو 8, 2013 قام بنشر مايو 8, 2013 السلام عليكم هذه اصل المعادلة في الاكسيل =SUMIFS(saad!$D:$D;saad!$A:$A;$B6;saad!$B:$B;C$5) بصراحة انا سجلتها بالمكرو ليحولها الاكسيل بنفسه علي اي حال RC2 تعني العمود الثاني (ثابت) مع تغير الصف تعادل هذه $B6 و العكس في R5C الصف الخامس ثابت مع تغير العمود حسب الخليه التي تحتوي علي المعادلة تعادل C$5 تحياتي
saad abed قام بنشر مايو 8, 2013 الكاتب قام بنشر مايو 8, 2013 اخى احمد كل الشكر والتقدير اعزكم الله بارك الله فيكم جزاك الله كل خير
خالد القدس قام بنشر مايو 8, 2013 قام بنشر مايو 8, 2013 السلام عليكم<br />سلمت يداك استاذ احمد<br />شرح رائع واكواد ذكية
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.