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

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

قام بنشر

السلام عليكم

مرفق ملف به 12 شيت للشهور وشيت لإجمالي الشهور بكل شيت مبيعات المنتجات للشهر والمطلوب الحصول على اجمالي المبيعات بشيت YTD لكل منتج ولكن بشرط جمع كل الشهور التي قبل شيت Month وعند تحريك شيت Month يتغير الجمع

يرجى استخدام الرموز البديله Wild cards ثم نسخ الدلة بخلية اخرى باستخدام Formula text للتمكن من معرفة الدالة المستخدمة

ان امكن استخدام اكثر من طريقة لكون شاكر ليكم جدا

YTD Products.xlsx

قام بنشر

متشكر جدا على ردك لكن انا عايز الجمع يكون من اول يناير لحد شيت Month اي حتى شهر ابريل فقط وكل مره احرك شيت month يتم تعديل الجمع مره اخرى

  • Like 1
قام بنشر

هكذا عمل لا يمكن للمعادلة ان تتحكم به لانه متعلق بموقع الشيت  Month  والله أعلم

يمكن عمل ما تريد بواسطة الماكرو

كما في الملف المرفق

الكود

Option Explicit

Sub Free_summation()
Dim M As Worksheet
Dim M_index
Dim first_index%, t%
Dim S2#, S3#, S4#, S5#, S6#
Set M = Sheets("Month")
Dim Arr()
M_index = M.Index
If M_index = 1 Then Exit Sub
If M_index > =13 Then M_index = 13
For t = 1 To M_index - 1
 S2 = S2 + IIf(IsNumeric(Sheets(t).Range("B2")), _
   Sheets(t).Range("B2"), 0)
 S3 = S3 + IIf(IsNumeric(Sheets(t).Range("B3")), _
   Sheets(t).Range("B3"), 0)
 S4 = S4 + IIf(IsNumeric(Sheets(t).Range("B4")), _
   Sheets(t).Range("B4"), 0)
 S5 = S5 + IIf(IsNumeric(Sheets(t).Range("B5")), _
   Sheets(t).Range("B5"), 0)
 S6 = S6 + IIf(IsNumeric(Sheets(t).Range("B6")), _
   Sheets(t).Range("B6"), 0)
Next
Arr = Array(S2, S3, S4, S5, S6)
M.Range("B2").Resize(UBound(Arr) + 1) = _
Application.Transpose(Arr)
End Sub

 

 

Moustafa.xlsm

  • Like 1
  • Thanks 1
  • أفضل إجابة
قام بنشر

في حال كان عدد الصفوف كبيراً (اكثر من  10 ) وقتها يجب ان نعين الكثير من المتغيرات S1/S2/....... /S20

و أرى ان هذا الأمر يأخذ كود طويل جداَ

لذلك اقترح هذا الكود الذي يحدد اوتوماتيكياً عدد الصفوف و يحمعها في Array

Option Explicit
Sub Free_summation_1()
Dim M As Worksheet
Dim M_index
Dim t%, k%
Dim lr%
Dim Arr()
lr = Sheets("Jan").Cells(Rows.Count, 2).End(3).Row
 For k = 2 To lr
  ReDim Preserve Arr(k - 2)
  Arr(k - 2) = 0
 Next
Set M = Sheets("Month")

M_index = M.Index
If M_index = 1 Then Exit Sub
If M_index > 12 Then M_index = 13
For t = 1 To M_index - 1
  For k = LBound(Arr) To UBound(Arr)
     Arr(k) = Arr(k) + _
     IIf(IsNumeric(Sheets(t).Range("B" & k + 2)), _
     Sheets(t).Range("B" & k + 2), 0)
  Next k
Next t
M.Range("B2").Resize(UBound(Arr) + 1) = _
Application.Transpose(Arr)
End Sub

ما أقصده في هذا الملف

Moustafa_extra.xlsm

  • Like 1
  • Thanks 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