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

كود جمع بين التاريخين SumIfs VBA


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

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

لقد وقفت عند الكود التالي من البارحة  :

Dim state As String
Dim shName As Worksheet
 Set shName = Sheets("mm")
LR = shName.Cells(Rows.Count, 4).End(xlUp).Row
det1 = CDate("01/01/2016")  '
det2 = Date
stafe = "amjad"
Sai = Application.WorksheetFunction.SumIfs(shName.Range("b3:b" & LR), shName.Range("o3:o" & LR), stafe, shName.Range("p3:p" & LR), (">=" & det1), (shName.Range("p3:p" & LR)), ("<=" & det2))
 

 

ممكن احد يساعدني في معرفة وين الخطاء ..

المطلوب من الكود  جمع  مبيعات موظف " amjad" خلال الفترة من تاريخ det1  وحتى تاريخ det2

علماً ان 

1- العمود Range("b3:b" & LR)  هو ما سيتم جمعة  في الشيت

2-  العمود  Range("o3:o" & LR)  هو  عمود فية اسماء الموظفين  في الشيت

3- العمود Range("p3:p" & LR)  هو عمود تاريخ المبيعات في الشيت

4- det1  = بداية التاريخ

5- det2 = نهاية التاريخ

 

اتمنى الحل

 

 

رابط هذا التعليق
شارك

أخى وحبيبى فى الله  محمد الزريعى

بستأذنك ممكن حضرتك ترفق ملف ربما احدا من الاخوه يقدر يساعد ومعاه ملف بدل ما هو بيقرا كود ومتغيرات مش شايفها

بالتوفيق أخى العزيز

أخى وحبيبى فى الله  محمد الزريعى

بستأذنك ممكن حضرتك ترفق ملف ربما احدا من الاخوه يقدر يساعد ومعاه ملف بدل ما هو بيقرا كود ومتغيرات مش شايفها

بالتوفيق أخى العزيز

رابط هذا التعليق
شارك

منذ ساعه, محمد الزريعي said:

طيب

 

طيب

 

بصراحه انا قعدت أضحك من كلمه طيب طيب

مرفق مرفق يارب يكون فيه الفكرة

جمع تاريخين.rar

 

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

أخي الكريم محمد

بحثت عن الكود في ملفك المرفق ولم أجد الكود ...يرجى إرفاق ملف آخر وبه الكود المطلوب التعديل عليه فقط وتوضيح المطلوب بشكل أدق حتى لا يتوه الأعضاء بين طيات الأكواد في الملف

تقبل تحياتي

 

رابط هذا التعليق
شارك

Private Sub CommandButton2_Click()
'On Error Resume Next
Dim shet, shName, Activshet, SPF As Worksheet
Dim det1, det2, OnDet, OfDet    As Date
Dim stafe, MyFile, NewName  As String

  nm = ActiveSheet.Name
Set Activshet = Sheets(nm)
mgm = TextBox2.Text
If mgm = "" Then mgm = Date
If Not IsDate(mgm) Then
   MsgBox "mmmmmmmmmmmmmmmmmmmm"
TextBox2.Text = ""
Else
  If mgm > 1 Then TextBox2.Text = Format$(mgm, "dd/mm/yyyy")
End If
 

sn = 0
det1 = Trim(TextBox1.Text)
det2 = Trim(TextBox2.Text)
Set shet = Sheets("h")
    shet.Activate
    LR = (shet.Cells(Rows.Count, 28).End(3).Row)


Set SPF = Sheets("SPerformance")
    SPF.Range("a4:zz10000").EntireRow.Delete
        resala1 = "startdate "
        resala2 = " endate "
    SPF.Range("c" & 1) = resala1 & det1 & resala2 & det2

For i = 2 To LR
   stafe = shet.Cells(i, 28)
   TARGT = shet.Cells(i, 29)
   OnDet = CDate(shet.Cells(i, 30))
   tar = shet.Cells(i, 31)
   If tar = "" Then tar = Date
   OfDet = CDate(Format$(tar, "dd/mm/yyyy"))
   QS = 0
   QR = 0

If OfDet >= det1 Or (OfDet = Date And OnDet <= det2) Then     
       sn = sn + 1
       LO = (SPF.Cells(Rows.Count, 1).End(3).Row) + 1
       SPF.Range("A" & LO) = sn
       SPF.Range("B" & LO) = stafe
       for z = 1 to 3
           shiit = Sheets(Z).Name
              Select Case shiit
                     Case Is = ("1")
                           zez = 16
                           Set shName = Sheets("1")
                     Case Is = ("2")
                            zez = 16
                            Set shName = Sheets("2")
                     Case Is = ("3")
                            zez = 20
                            Set shName = Sheets("3")
              End Select
              shName.Activate
              LRSH = shName .Cells(Rows.Count, 4).End(xlUp).Row
     

 

        
s = Application.WorksheetFunction.SumIfs((shName .Range("b3:b" & LRSH )), (shName .Range("o3:o" & LRSH )), stafe , (shName .Range("p3:p" & LRSH )), (">=" & det1), (shName .Range("p3:p" & LRSH )), ("<=" & det2))        

 

 

QS = QS + s
  QR = QR + R

  SPF.Range("C" & LO) = 0
  SPF.Range("D" & LO) = QS
  SPF.Range("E" & LO) = 0
  SPF.Range("F" & LO) = QR
       Next z
       SPF.Activate
    End If
    Next i
Activshet.Activate

End Sub

 

المطلوب هو  جمع  مبيعات موظف ،،

أذا تم تغيير اسم الموظف  يقوم بجمع مبيعاته من الشيت رقم 1 ثم الشيت رقم 2 ثم الشيت رقم 3 ،،  بين تاريخين محددين      ( det1  و det2 )

رابط هذا التعليق
شارك

S = Application.WorksheetFunction.SumIfs( shName.Range("b3:b" & LRSH), shName.Range("p3:p" & LRSH), (">=" & det1), shName.Range("p3:p" & LRSH),  (  ("<=" & det2 ) ,    shName.Range("o3:o" & LRSH), stafe

هذا كود  الجمع ،، لكن يطلع عندي خطاء  عندما اغير date1  الي dete2

رابط هذا التعليق
شارك

أخي الكريم جربت الملف المرفق والكود يعمل بدون خطأ ولكن النتائج أنت أدرى بها مني .. فهل النتائج صحيحة أم أنه يحدث خطأ معك فقط ...؟

 

رابط هذا التعليق
شارك

والله يا استاذي  ياسر خليل ابو البراء ،، مش عارف وين المشكلة ..

لخصت  الكود في كود بسيط للتجربة  في المرفق // كود عبارة عن ثلاثة اسطر  تقريباً في المديول وليس الفورم . ...  

عالعموم  انا اول ما افتح الملف انقر فوق الدائرة الزرقاء لتشغيل الكود أدخل حرف a  النتيجة تظهر عندي صفر

 

sumifsvba.rar

شكل الزهايمر أشتغل عند جهازي  ما يعرف يجمع .. :wavetowel: 

رابط هذا التعليق
شارك

جرب الكود بهذا الشكل

ركز على تحويل التاريخ إلى تسلسل رقمي وليس تاريخ

Sub SUMIFS_VBA()
    Set shName = Sheets("2")
    LRSH = (shName.Cells(Rows.Count, 15).End(3).Row)
    
    det1 = CDbl(#1/1/2016#)
    det2 = CDbl(Date)
    
    stafe = InputBox("ادخل اسم المسوق الذي هو في العمود o ")
    
    S = Application.WorksheetFunction.SumIfs( _
    shName.Range("B3:B" & LRSH), _
    shName.Range("P3:P" & LRSH), ">=" & det1, _
    shName.Range("P3:P" & LRSH), "<=" & det2, _
    shName.Range("O3:O" & LRSH), stafe)
    
    MsgBox (S)
End Sub

تقبل تحياتي

 

  • Like 1
رابط هذا التعليق
شارك

اول شئ اشكرك استاذي القدير ياسر  خليل ابو البراء .

ثاني شئ  طبقت الكود الخاص بك وأشتغل وراح اطبقه على ملفي الخاص الاكسل ،

ربما تكون المشكلة  لانني قمت بتعريف  det1  و det2  نوع تاريخ .. على الشكل التالي

dim det1 as date

dim det2 as date

وعندما مسحتهم  اشتغل تمام ،،

ولكن فوق هذا نسخت الكود الخاص بك ،،  لا نه اضمن ..

 

شكراً على حلك السريع ..  وربنا يجعلها في ميزان حسانتك أخي الكريم ..

  • Like 1
رابط هذا التعليق
شارك

الحمد لله أن تم المطلوب على خير أخي الحبيب محمد الزريعي

بالفعل لا تقم بالإعلان عن المتغيرين det1 و det2 من النوع تاريخ فقد ذكرت لك أنه تم تحويلهما ليكونا كرقم متسلسل وليس تاريخ .. يفضل الإعلان عنهما من النوع Variant

عموماً الحمد لله أن عرفت موضع المشكلة وتم حلها بفضل الله وحده

تقبل تحياتي

  • 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