مقدمة: لماذا طريقة المتوسط المرجح؟
إذا كنت محاسباً أو مديراً مالياً، فأنت تعرف جيداً أن تسعير المخزون ليس مجرد “إحصاء بضاعة” – بل هو قرار محاسبي يؤثر مباشرةً على تكلفة البضاعة المباعة (COGS)، وصافي الربح، والضريبة المستحقة.
طريقة المتوسط المرجح (Weighted Average Cost Method) هي إحدى الطريقتين المعتمدتين في معيار المحاسبة المصري رقم 2 – المخزون، إلى جانب طريقة FIFO. وتتميز المتوسط المرجح بأنها:
- تُسوّي تقلبات الأسعار عبر الزمن بدلاً من التضخيم أو التقليل
- أسهل للتطبيق الضريبي في ظروف الأسعار المتذبذبة كالسوق المصري
- مقبولة دولياً وفق معيار المحاسبة الدولي IAS 2
في هذا المقال، سأشرح لك شيت Excel احترافي مبني على كود VBA كامل يقوم بحساب المتوسط المرجح تلقائياً، وتحديث المخزون لحظياً مع كل حركة دخول أو خروج.
شرح بالفيديو لطريقة المتوسط المرجح
ما هي طريقة المتوسط المرجح للمخزون؟
التعريف
طريقة المتوسط المرجح تعني أن تكلفة كل وحدة في المخزون تُحسب في كل لحظة كمتوسط مرجح لتكلفة الوحدات الموجودة + الوحدات الداخلة، وفق المعادلة التالية:
متوسط تكلفة الوحدة = إجمالي قيمة المخزون المتاح ÷ إجمالي كمية المخزون المتاحمثال بسيط
| الحركة | الكمية | سعر الوحدة | القيمة |
|---|---|---|---|
| رصيد أول المدة | 1,000 وحدة | 10 جنيه | 10,000 جنيه |
| مشتريات يناير | 1,000 وحدة | 150 جنيه | 150,000 جنيه |
| المتوسط المرجح | 2,000 وحدة | 80 جنيه | 160,000 جنيه |
أي أن تكلفة أي وحدة تخرج من المخزون = 80 جنيه (لا 10 ولا 150، بل المتوسط المرجح).
هيكل الشيت – أربع أوراق عمل منظمة
الشيت مقسّم إلى 4 أوراق عمل (Sheets)، كل ورقة بدور محدد:
📋 ورقة 1: Stock (الأرصدة الافتتاحية)
| العمود | المحتوى |
|---|---|
| A | كود الصنف |
| B | اسم الصنف |
| C | التاريخ |
| D | الكمية |
| E | تكلفة الوحدة |
| F | إجمالي القيمة |
هنا تُدخل رصيد أول المدة لكل صنف مع تكلفة الوحدة. هذا هو نقطة البداية التي ينطلق منها الكود.
📥📤 ورقة 2: Transactions (حركات المخزون)
| العمود | المحتوى |
|---|---|
| A | تاريخ الحركة |
| B | كود الصنف |
| C | نوع الحركة (TRANSACTION IN / TRANSACTION OUT) |
| D | الكمية |
| E | تكلفة الوحدة (للمشتريات فقط) |
| F | COGS / القيمة (يملؤها الكود تلقائياً) |
ملاحظة مهمة: العمود F لا تكتب فيه شيئاً – الكود يحسبه تلقائياً عند التشغيل.
📊 ورقة 3: CurrentStock (المخزون الحالي)
تُظهر بعد تشغيل الكود:
- الكمية الحالية لكل صنف
- متوسط تكلفة الوحدة (محسوب بالمتوسط المرجح)
- إجمالي قيمة المخزون
- تاريخ آخر تحديث
📈 ورقة 4: Inventory_Summary (ملخص المخزون)
جدول موجز يُستخدم للمراجعة السريعة والتقارير الإدارية، يحتوي على نفس بيانات CurrentStock لكن بتنسيق مُبسّط جاهز للطباعة.
كيف يعمل كود VBA خطوة بخطوة
المرحلة الأولى: قراءة الأرصدة الافتتاحية
vba
' 1. Read Initial Stock into Dictionaries
lastStock = wsStock.Cells(wsStock.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastStock
code = Trim(CStr(wsStock.Cells(i, 1).Value))
If code <> "" Then
dictDesc(code) = wsStock.Cells(i, 2).Value
dictQty(code) = Val(wsStock.Cells(i, 4).Value)
dictVal(code) = Val(wsStock.Cells(i, 4).Value) * Val(wsStock.Cells(i, 5).Value)
End If
Next iماذا يفعل هذا الجزء؟ يقرأ كل أصناف المخزون من ورقة Stock ويخزّنها في Dictionaries (قواميس في الذاكرة)، واحد للكمية وآخر للقيمة. هذا يجعل الحسابات اللاحقة فائقة السرعة.
المرحلة الثانية: معالجة الحركات
vba
If InStr(transType, "IN") > 0 Then
' إضافة مشتريات: الكمية والقيمة تتراكمان
dictQty(code) = dictQty(code) + qty
dictVal(code) = dictVal(code) + (qty * unitCost)
ElseIf InStr(transType, "OUT") > 0 Then
' حساب المتوسط المرجح لحظة الصرف
currentAvgCost = dictVal(code) / dictQty(code)
cogs = qty * currentAvgCost
' خصم الكمية والقيمة من المخزون
dictQty(code) = dictQty(code) - qty
dictVal(code) = dictVal(code) - cogs
End Ifمنطق المتوسط المرجح هنا:
- عند كل TRANSACTION IN: تُجمع الكمية والقيمة
- عند كل TRANSACTION OUT: يُحسب المتوسط في تلك اللحظة ويُضرب في الكمية المباعة → هذا هو COGS
المرحلة الثالثة: الحماية من أخطاء الفاصلة العائمة
vba
' Avoid small floating point errors near zero
If dictQty(code) <= 0 Then
dictQty(code) = 0
dictVal(code) = 0
End Ifتفصيلة دقيقة: بدون هذا السطر، قد ينتج عن الحسابات المتتالية قيمة مثل 0.000000001 بدلاً من صفر، مما يسبب أخطاء في حساب المتوسط التالي.
المرحلة الرابعة: كتابة النتائج وتنسيقها
الكود يُصدّر النتائج تلقائياً إلى ورقتي CurrentStock و Inventory_Summary مع:
- ترويسة بخلفية زرقاء داكنة ونص أبيض
- حدود للجدول
- تعديل عرض الأعمدة تلقائياً (AutoFit)
طريقة الاستخدام – خطوات عملية
الخطوة الأولى: إدخال الأرصدة الافتتاحية
افتح ورقة Stock وأدخل لكل صنف:
- كود الصنف (مثلاً: 10100)
- اسم الصنف
- تاريخ الرصيد الافتتاحي
- الكمية
- تكلفة الوحدة
الخطوة الثانية: إدخال حركات المخزون
في ورقة Transactions أدخل كل حركة على سطر مستقل:
- أكتب
TRANSACTION INلأي مشتريات أو إضافات - أكتب
TRANSACTION OUTلأي مبيعات أو صرفيات - لا تترك فراغات في كود الصنف
الخطوة الثالثة: تشغيل الكود
- اضغط
Alt + F8 - اختر UpdateWeightedAverage_Final_English
- اضغط Run
ستظهر رسالة تأكيد بعدد الصفوف التي تمت معالجتها، وستجد النتائج جاهزة في أوراق CurrentStock و Inventory_Summary.
مقارنة: المتوسط المرجح FIFO vs
| المعيار | المتوسط المرجح | FIFO |
|---|---|---|
| أسلوب التقييم | متوسط تكلفة كل الوحدات | تكلفة أقدم وحدة تخرج أولاً |
| تأثير ارتفاع الأسعار | COGS متوسطة، ربح معتدل | COGS منخفضة، ربح أعلى |
| تأثير انخفاض الأسعار | COGS متوسطة | COGS مرتفعة، ربح أقل |
| التعقيد الحسابي | أبسط | أعقد قليلاً |
| القبول وفق IAS 2 | ✅ معتمد | ✅ معتمد |
| القبول وفق معيار مصري 2 | ✅ معتمد | ✅ معتمد |
| الملاءمة للأسعار المتذبذبة | ✅ أفضل | قد يعطي تشويهاً |
📌 نصيحة عملية: إذا كانت أسعار مشترياتك تتغير كثيراً بسبب تقلبات الدولار أو سعر الصرف، فطريقة المتوسط المرجح تعطيك صورة أكثر واقعية للتكلفة الفعلية.
الأساس المحاسبي والمعياري
معيار المحاسبة المصري رقم 2 – المخزون
يُجيز المعيار استخدام إحدى طريقتين لتحديد تكلفة المخزون:
- طريقة الوارد أولاً صادر أولاً (FIFO)
- طريقة المتوسط المرجح (Weighted Average)
وينص المعيار صراحةً على أن تكلفة المخزون تشمل:
- تكلفة الشراء
- تكاليف التحويل
- التكاليف الأخرى المتكبَّدة للوصول بالمخزون إلى موقعه وحالته الحالية
القيد المحاسبي عند صرف المخزون
من حـ/ تكلفة البضاعة المباعة (COGS)
إلى حـ/ المخزونحيث المبلغ = الكمية المباعة × متوسط تكلفة الوحدة وقت الصرف.
أسئلة شائعة
س: هل يعمل الشيت مع أكثر من صنف في نفس الوقت؟
ج: نعم، الكود يستخدم Dictionaries تتتبع كل صنف بكوده بشكل مستقل، ويمكن إضافة مئات الأصناف.
س: ماذا لو خرجت كمية أكبر من الرصيد المتاح؟
ج: الكود يحمي من هذا الخطأ – إذا وصل الرصيد لصفر أو أقل يُصفّره تلقائياً، لكن يُنصح بالتحقق من البيانات قبل التشغيل.
س: هل يمكن تعديل الشيت للغة العربية؟
ج: نعم، يمكن ترجمة أسماء الأوراق والأعمدة، مع تعديل كود VBA ليتعرف على الأسماء الجديدة.
س: هل الشيت يحتسب ضريبة القيمة المضافة؟
ج: لا – الشيت يُسجّل تكلفة المخزون قبل الضريبة. يمكن إضافة عمود منفصل لضريبة القيمة المضافة إذا احتجت.
س: هل يمكن استخدامه مع QuickBooks كمرجع تدقيق؟
ج: نعم، يصلح كأداة تحقق ومراجعة يدوية بجانب QuickBooks، خاصةً في الشركات التي تعمل بالمخزون المجمّع أو تكاليف الإنتاج.
رأيي المهني
أ. أحمد فتحي – محاسب قانوني معتمد (CPA)
طريقة المتوسط المرجح هي الأنسب للبيئة المصرية في ظل التضخم وتغير أسعار العملات. لاحظت في عملي مع منشآت التصنيع والتجارة أن الشركات التي تستخدم FIFO في ظروف التضخم تحقق أرباحاً ورقية مرتفعة قد تستوجب توزيعات أو ضرائب مرتفعة دون أن تعكس الواقع الفعلي للقدرة التشغيلية.
هذا الشيت ليس مجرد أداة حسابية – هو نظام تقييم مخزون كامل يمكن تكييفه مع أي حجم عمل، من المنشأة الصغيرة حتى الشركة المتوسطة. سأشرح في الفيديو القادم على يوتيوب تطبيقاً عملياً كاملاً خطوة بخطوة.
تنزيل الشيت
📥
تحميل الملفالشيت متوافق مع Microsoft Excel 2016 وما بعده، ويتطلب تفعيل Macros عند الفتح.
محاسب قانوني ومراقب حسابات معتمد بخبرة تمتد منذ عام 2006، متخصص في الضرائب المصرية وتأسيس الشركات، وخبير في تصميم الأنظمة المحاسبية المتقدمة وحلول الربط الإلكتروني. مؤسس منصة “محاسب عربي/arabicaccountant.com” لتقديم الحلول المالية والتعليمية المتكاملة.

