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

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

قام بنشر

السلام عليكم

الزملاء الكرام لدي ملف في الصفحة الاولى كامل المواد الاولية و تكلفة كل مادة وفي صفحة الثانية المنتجات و كمية كل مادة اولية اريد في الصفحة الثانية ان اجمع اجمالي التكلفة لكل منتج 

حاولت استخدام دالة sumproduct و لكن تعطيني خطأ بسبب عدم تساوي عدد المواد في الصفحة الثانية مع عدد المواد في الصفحة الاولى

 

الملف مرفق

مع الشكر

officena.xlsx

قام بنشر

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

المعادلة التالية تتعامل في حالة اختلاف الصفوف

=SUMPRODUCT((RawMaterials!$B$2:$B$20=INDEX(ProductionMode!$B$3:$B$9; ROW(ProductionMode!$B$3:$B$9)-ROW(ProductionMode!$B$3)+1))*(RawMaterials!$C$2:$C$20)*INDEX(ProductionMode!C3:C9; ROW(ProductionMode!C3:C9)-ROW(ProductionMode!C3)+1))

 

قام بنشر

تحياتي استاذ عبدالله

 

شكرا لمجهودك حسب المعادلة فهي تظهر تكلفة المنتج للمادة a فقط ولكن تكلفة المنتج هي للجمع للمواد في الصفحة الثانية

بمعنى ان تكلفة المنتج هي بضرب كمية المادة a  مع تكلفتها في الصفحة الاولى + المادة s مع تكلفتها في الصفحة الاولى و هكذا

شكرا لك مرة اخرى

قام بنشر (معدل)

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

حسب وصفك للامر  انت تحتاج الى كود ليقوم بالمهمة جرب واخبرنى بالنتيجة

الكود 

Sub CalculateProductionCost()
    Dim wsRaw As Worksheet
    Dim wsProd As Worksheet
    Dim lastRowRaw As Long
    Dim lastRowProd As Long
    Dim i As Long, j As Long
    Dim materialName As String
    Dim materialCost As Variant
    Dim totalCost As Double
    Dim materialCosts As Object
    Dim prodValues As Variant
    
    Set wsRaw = ThisWorkbook.Sheets("RawMaterials")
    Set wsProd = ThisWorkbook.Sheets("ProductionMode")
    
    lastRowRaw = wsRaw.Cells(wsRaw.Rows.Count, "B").End(xlUp).Row
    lastRowProd = wsProd.Cells(wsProd.Rows.Count, "B").End(xlUp).Row
    
    Set materialCosts = CreateObject("Scripting.Dictionary")
    
    For i = 2 To lastRowRaw
        materialName = wsRaw.Cells(i, 2).Value
        materialCost = wsRaw.Cells(i, 3).Value
        If IsNumeric(materialCost) Then
            materialCosts(materialName) = materialCost
        End If
    Next i
    
    prodValues = wsProd.Range("B2:K9").Value
    
    For j = 3 To 11
        totalCost = 0
        For i = 1 To 8
            materialName = prodValues(i, 1)
            If materialCosts.exists(materialName) And IsNumeric(prodValues(i, j - 1)) Then
                totalCost = totalCost + (prodValues(i, j - 1) * materialCosts(materialName))
            End If
        Next i
        wsProd.Cells(12, j).Value = totalCost
    Next j
End Sub

الملف

officena.xlsb

 

تم تعديل بواسطه عبدالله بشير عبدالله
قام بنشر

الله يعطيك العافية استاذ عبدالله

ان كان هناك معادلة يكون افضل بالنسبة لي لانني لست خبيرا بالفيجوال بيزيك

 

بكل الاحوال اشكرك جدا

قام بنشر (معدل)

 المعادلة 

=SUMPRODUCT(SUMIFS(RawMaterials!$C$2:$C$20; RawMaterials!$B$2:$B$20; ProductionMode!$B3:$B9); ProductionMode!C3:C9)

الملف

 officena1.xlsb

 

 

تم تعديل بواسطه عبدالله بشير عبدالله
  • Like 1
قام بنشر

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

حياك الله اخي @عبدالله بشير عبدالله اسمح لي بهدا الاقتراح 

اخي @hussam031 قم بوضع احدى المعادلات التالية في الخلية C12 مع سحبها يسارا لغاية اخر عمود K 

 

=SUMPRODUCT(C$3:C$9, INDEX(RawMaterials!$C$2:$C$100, MATCH($B$3:$B$9, RawMaterials!$B$2:$B$100, 0)))

OR

=SUMPRODUCT(C$3:C$9, VLOOKUP($B$3:$B$9, RawMaterials!$B$2:$C$100, 2, FALSE))

 

officena V2.xlsx

  • Like 1
قام بنشر

استاذ عبد الله شكرا لك 

 

استاذ محمد هشام اشكرك على استجابتك اخي الكريم، ولكن عن تطبيق المعادلة تعطيني Value# رغم اني اضعها ضمن صفيف، عند تطبيقها لا تعمل رغم ان الملف الذي ارفقته حضرتك النتائج موجودة

حتى الملف المرفق من قبلك اذا حررت الخلية و وضعت المعادلة ضمن صفيف {} تعطي نفس الخطأ السابق

استاذ هشام عدلت قليلا على المعادلة بدر استخدام sumproduct استخدمت sum

مع تقديري لك

 

قام بنشر
2 ساعات مضت, hussam031 said:

اذا حررت الخلية و وضعت المعادلة ضمن صفيف {} تعطي نفس الخطأ السابق

كيف وضعت المعادلة ضمن صفيف؟؟؟

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

بالتوفيق

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information