محمد المهندس قام بنشر أغسطس 12, 2017 مشاركة قام بنشر أغسطس 12, 2017 السلام عليكم ورحمة الله وبركاته امنحوني دقائق من وقتكم لأني تعبت من هذه الدالة في تلك الوظيفة التي أقمتها لأجلها... لقد صممتُ مصنفان أحدهما فيه المصروف اليومي لمخزن شركتنا والآخر رصد مجموع ما صرف في الحاسوب الخاص بي، بحيث إذا ما كتبتُ البند ينزل مجموع هذا البند تلقائيا من المصنف الأول الخاص بالمخزن إلى المصنف الخاص بي، فإذا كان المصنف مفتوحًا ينزل المجموع ولا إشكال، وأما إذا كان مغلقًا فلا ينزل بل يكتب #REF!. فما السبب في ذلك؟ وهل هناك دالة أخرى قد تحل هذه المشكلة أم أن هناك شيئًا ينقصني لإتمام المهمة؟ لأني حاولت مرارًا وتكرارًا ولم أجد حلا. وفي ذلك أرفقتُ ملفًا يوضح ذلك بالتفصيل. Documents.rar رابط هذا التعليق شارك More sharing options...
ابو علي و سدرة قام بنشر أغسطس 12, 2017 مشاركة قام بنشر أغسطس 12, 2017 (معدل) لعل الرابط دا ينفعك تم تعديل أغسطس 12, 2017 بواسطه ابو علي و سدرة forget the link رابط هذا التعليق شارك More sharing options...
ياسر خليل أبو البراء قام بنشر أغسطس 12, 2017 مشاركة قام بنشر أغسطس 12, 2017 وعليكم السلام أخي الكريم محمد المهندس في الحقيقة بحثت عن حل بالمعادلات كبديل حيث أن الدالة SUMIF لا تعمل والملف مغلق .. وجربت SUMPRODUCT وجربت الدالة SUM ومعها IF في معادلة صفيف لعلها تؤدي بالغرض .. ورغم اختلاف المعادلات النتائج واحدة وصحيحة فقط إذا كان الملف مفتوح .. ولا يوجد أمامي سوى حل واحد لك وهو العمل بالأكواد .. حيث كود بسيط يمكن أن يحل المشكلة ، حيث يقوم الكود بدون أن تشعر بفتح الملف المغلق وإدراج المعادلات والحصول على القيم فقط للتخلص من المعادلات ثم إغلاق الملف .. كل هذا سيكون بضغطة زر واحدة فقط ، ولا أرجح أن يكون مع كل تغيير في الملف لأن الكود يقوم بفتح ملف آخر وإغلاقه وهذا قد يسبب بطء إذا تكرر في حدث تغير ورقة العمل .. بالتالي من وجهة نظري (ولعله توجد حلول أخرى والله أعلم) الأفضل هو اختيار الصرف المطلوب في العمود بالكامل وتنفيذ الكود مرة واحدة للحصول على النتائج فقط .. الكود مرفق به التعليقات لعلها تفيدك في فهم الكود لتستطيع التعديل عليه إذا أحببت في أي وقت Sub Test() Dim wb As Workbook 'إلغاء تحديث الشاشة لتسريع الكود Application.ScreenUpdating = False 'فتح المصنف الخاص بالمخزن للحصول على النتائج المطلوبة Set wb = Workbooks.Open(ThisWorkbook.Path & "\مصنف المخزن.xlsx") 'وضع المعادلات في النطاق في العمود الأول ثم الحصول على القيم فقط With ThisWorkbook.Sheets(1) With .Range("A3:A" & .Cells(Rows.Count, 1).End(xlUp).Row) .Formula = "=SUMIF('مصنف المخزن.xlsx'!الجدول1[النوع],[الصرف],'مصنف المخزن.xlsx'!الجدول1[المبلغ])" .Value = .Value End With End With 'إغلاق المصنف الخاص بالمخزن بدون حفظ التغييرات wb.Close False 'إعادة تفعيل خاصية تحديث الشاشة Application.ScreenUpdating = True End Sub 1 رابط هذا التعليق شارك More sharing options...
محمد المهندس قام بنشر أغسطس 14, 2017 الكاتب مشاركة قام بنشر أغسطس 14, 2017 عندما أُدخل هذا تخرج هذه الرسالة لي. رابط هذا التعليق شارك More sharing options...
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2017 مشاركة قام بنشر أغسطس 14, 2017 عند نسخ الكود اجعل اتجاه الكتابة باللغة العربية ليتم النسخ بشكل صحيح . حيث يظهر في الصورة الخاصة بك الحروف العربية برموز غريبة رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان