محمد المهندس قام بنشر أغسطس 12, 2017 قام بنشر أغسطس 12, 2017 السلام عليكم ورحمة الله وبركاته امنحوني دقائق من وقتكم لأني تعبت من هذه الدالة في تلك الوظيفة التي أقمتها لأجلها... لقد صممتُ مصنفان أحدهما فيه المصروف اليومي لمخزن شركتنا والآخر رصد مجموع ما صرف في الحاسوب الخاص بي، بحيث إذا ما كتبتُ البند ينزل مجموع هذا البند تلقائيا من المصنف الأول الخاص بالمخزن إلى المصنف الخاص بي، فإذا كان المصنف مفتوحًا ينزل المجموع ولا إشكال، وأما إذا كان مغلقًا فلا ينزل بل يكتب #REF!. فما السبب في ذلك؟ وهل هناك دالة أخرى قد تحل هذه المشكلة أم أن هناك شيئًا ينقصني لإتمام المهمة؟ لأني حاولت مرارًا وتكرارًا ولم أجد حلا. وفي ذلك أرفقتُ ملفًا يوضح ذلك بالتفصيل. Documents.rar
ابو علي و سدرة قام بنشر أغسطس 12, 2017 قام بنشر أغسطس 12, 2017 (معدل) لعل الرابط دا ينفعك تم تعديل أغسطس 12, 2017 بواسطه ابو علي و سدرة forget the link
ياسر خليل أبو البراء قام بنشر أغسطس 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
محمد المهندس قام بنشر أغسطس 14, 2017 الكاتب قام بنشر أغسطس 14, 2017 عندما أُدخل هذا تخرج هذه الرسالة لي.
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2017 قام بنشر أغسطس 14, 2017 عند نسخ الكود اجعل اتجاه الكتابة باللغة العربية ليتم النسخ بشكل صحيح . حيث يظهر في الصورة الخاصة بك الحروف العربية برموز غريبة
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.