اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

عمل جداول أوتوماتيكا


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

حياكم الله

عندي ثلاث شيتات 

الشيت الاول فيه البيع 

الشيت الثاني مفصل حسب الاسم

الشيت الثالث : مفصل البيع حسب التاريخ

عمل الشيتات الثاني والثالث

اوتوماتيكا

 

 

جدول الشراء.xlsx

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

جرب هذا الماكرو

Option Explicit

Sub resume_facture()
Dim my_arr2(1 To 2)
my_arr2(1) = "مجموع مبلغ الشراء حسب التاريخ": my_arr2(2) = "التاريخ":
Dim i%, k%, m%: m = 2
Dim s#
Dim lr1%: lr1 = Achat.Cells(Rows.Count, 1).End(3).Row
Dim lr2%: lr2 = Detail.Cells(Rows.Count, 1).End(3).Row
Dim lr3%: lr3 = By_Date.Cells(Rows.Count, 1).End(3).Row
Dim laste_D%
Dim laste_B%


Detail.Range("A1:D" & lr2).ClearContents
By_Date.Range("a1:b" & lr3).ClearContents
Dim Fter_Rg As Range
Set Fter_Rg = Achat.Range("a1:d" & lr1)
Dim Col As Object
Set Col = CreateObject("system.collections.arraylist")
With Col
For i = 2 To lr1
 If Not .contains(Achat.Range("b" & i).Value) Then _
   .Add Achat.Range("b" & i).Value
   Next
End With
 For i = 0 To Col.Count - 1
 '-----------------------------
   laste_D = Detail.Cells(Rows.Count, 1).End(3).Row
   If laste_D% <> 1 Then laste_D% = laste_D% + 2
  '=========================
  Fter_Rg.AutoFilter 2, Col.Item(i)
  Fter_Rg.SpecialCells(12).Copy _
  Detail.Range("a" & laste_D%)
 Next
 Fter_Rg.AutoFilter
 Col.Clear
 '=========================
 By_Date.Cells(1, 1).Resize(, 2) = my_arr2
 For i = 2 To lr1
 If Not Col.contains(Achat.Range("d" & i).Value) Then _
   Col.Add Achat.Range("d" & i).Value
   Next
  '=========================
  
 For i = 0 To Col.Count - 1
  For k = 2 To Fter_Rg.Rows.Count
    If Achat.Range("D" & k) = Col.Item(i) Then
     By_Date.Range("b" & i + 2) = Col.Item(i)
     s = s + Achat.Range("C" & k)
     End If
   Next
    By_Date.Range("A" & i + 2) = s
    s = 0
   Next
 '===================
End Sub

الملف مرفق

 

_salimجدول الشراء.xlsm

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

بالتأكيد هذا يسمى ابداع

احسنت استاذى الكبير سليم عمل رائع بارك الله فيك وجعله فى ميزان حسناتك واكثر الله من امثالك وزادك الله من فضله

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

الان, سليم حاصبيا said:

جرب هذا الماكرو


Option Explicit

Sub resume_facture()
Dim my_arr2(1 To 2)
my_arr2(1) = "مجموع مبلغ الشراء حسب التاريخ": my_arr2(2) = "التاريخ":
Dim i%, k%, m%: m = 2
Dim s#
Dim lr1%: lr1 = Achat.Cells(Rows.Count, 1).End(3).Row
Dim lr2%: lr2 = Detail.Cells(Rows.Count, 1).End(3).Row
Dim lr3%: lr3 = By_Date.Cells(Rows.Count, 1).End(3).Row
Dim laste_D%
Dim laste_B%


Detail.Range("A1:D" & lr2).ClearContents
By_Date.Range("a1:b" & lr3).ClearContents
Dim Fter_Rg As Range
Set Fter_Rg = Achat.Range("a1:d" & lr1)
Dim Col As Object
Set Col = CreateObject("system.collections.arraylist")
With Col
For i = 2 To lr1
 If Not .contains(Achat.Range("b" & i).Value) Then _
   .Add Achat.Range("b" & i).Value
   Next
End With
 For i = 0 To Col.Count - 1
 '-----------------------------
   laste_D = Detail.Cells(Rows.Count, 1).End(3).Row
   If laste_D% <> 1 Then laste_D% = laste_D% + 2
  '=========================
  Fter_Rg.AutoFilter 2, Col.Item(i)
  Fter_Rg.SpecialCells(12).Copy _
  Detail.Range("a" & laste_D%)
 Next
 Fter_Rg.AutoFilter
 Col.Clear
 '=========================
 By_Date.Cells(1, 1).Resize(, 2) = my_arr2
 For i = 2 To lr1
 If Not Col.contains(Achat.Range("d" & i).Value) Then _
   Col.Add Achat.Range("d" & i).Value
   Next
  '=========================
  
 For i = 0 To Col.Count - 1
  For k = 2 To Fter_Rg.Rows.Count
    If Achat.Range("D" & k) = Col.Item(i) Then
     By_Date.Range("b" & i + 2) = Col.Item(i)
     s = s + Achat.Range("C" & k)
     End If
   Next
    By_Date.Range("A" & i + 2) = s
    s = 0
   Next
 '===================
End Sub

الملف مرفق

 

_salimجدول الشراء.xlsm

احسنت وابدعت استاذنا salim الله يبارك فى حضرتك 

بعد اذنك اساذنا ممكن شرح الكود الرائع من ابدعاتك

شكرا لحضرتك

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

حياك الله الاستاذ المحترم سليم  - مشكور  - تفضلت علينا

ملاحظة

1 - في الشيت الثاني - لم يقم بالجمع 

2 - تم اضافة عمود واحد جديد - في شيت الاول Achat  - وفقت والحمد لله  من التعديل على الكود - ممكن التفضل والنظر على الملف المرفق الجديد لعمل التغييرات المطلوبة

ملاحظات مهمة - راجين الاهتمام  بالموضوع 

ولكم من الله تعالى الأجر  - إنه لا يضيع أجر المحسنين

 

 

 

 

_salimجدول الشراء (1).xlsm

تم تعديل بواسطه خالد ابوعوف
اضافة وتعديل
رابط هذا التعليق
شارك

تم معالجة الامر

الكود

Option Explicit

Sub resume_facture()
Dim my_arr2(1 To 2)
my_arr2(1) = "مجموع مبلغ الشراء حسب التاريخ": my_arr2(2) = "التاريخ":
Dim i%, k%, m%: m = 2
Dim s#
Dim lr1%: lr1 = Achat.Cells(Rows.Count, 1).End(3).Row
Dim lr2%: lr2 = Detail.Cells(Rows.Count, 1).End(3).Row
Dim lr3%: lr3 = By_Date.Cells(Rows.Count, 1).End(3).Row
Dim laste_e%
Dim laste_B%


Detail.Range("A1:e" & lr2).ClearContents
By_Date.Range("a1:b" & lr3).ClearContents
Dim Fter_Rg As Range
Set Fter_Rg = Achat.Range("a1:e" & lr1)
Dim Col As Object
Set Col = CreateObject("system.collections.arraylist")
With Col
For i = 2 To lr1
 If Not .contains(Achat.Range("b" & i).Value) Then _
   .Add Achat.Range("b" & i).Value
   Next
End With
 For i = 0 To Col.Count - 1
 '-----------------------------
   laste_e = Detail.Cells(Rows.Count, 1).End(3).Row
   If laste_e% <> 1 Then laste_e% = laste_e% + 2
  '=========================
  Fter_Rg.AutoFilter 2, Col.Item(i)
  Fter_Rg.SpecialCells(12).Copy _
  Detail.Range("a" & laste_e%)
 Next
 Fter_Rg.AutoFilter
 Col.Clear
 '=========================
 By_Date.Cells(1, 1).Resize(, 2) = my_arr2
 For i = 2 To lr1
 If Not Col.contains(Achat.Range("d" & i).Value) Then _
   Col.Add Achat.Range("d" & i).Value
   Next
  '=========================
  
 For i = 0 To Col.Count - 1
  By_Date.Range("b" & i + 2) = Col.Item(i)
  For k = 2 To Fter_Rg.Rows.Count
    If Achat.Range("D" & k) = Col.Item(i) Then
    
     s = s + Achat.Range("C" & k)
     End If
   Next
    By_Date.Range("A" & i + 2) = s
    s = 0
   Next
  Creat_formula
 '===================
End Sub
Rem+++++++++++++++++++++++++++++++++++++++++++++++++
Sub Creat_formula()
With Detail
Dim arr1(), arr2(), k%: k = 1
Dim t%: t = 1
Dim i%
Dim Ro%: Ro = .Cells(Rows.Count, 2).End(3).Row
For i = 2 To Ro + 1
 If .Cells(i, 2) = "" Then
  .Cells(i, 1) = "Sum"
   End If
  Next
.Range("F2:F" & Ro).Formula = "=IF(NOT(ISNUMBER(C2)),"""",SUM(C2,-E2))"
'==========================
For i = 1 To Ro + 1
 If .Cells(i, 1) = "رقم بطاقة السكن" Then
  ReDim Preserve arr1(1 To k): arr1(k) = (.Cells(i, 1).Row) + 1
  k = k + 1
   End If
  Next
For i = 1 To Ro + 1
 If .Cells(i, 1) = "Sum" Then
  ReDim Preserve arr2(1 To t): arr2(t) = (.Cells(i, 1).Row) - 1
  t = t + 1
   End If
  Next
'=========================
 For i = LBound(arr1) To UBound(arr1)
  With .Cells(arr2(i) + 1, 3)
    .Formula = "=SUM(C" & arr1(i) & ":C" & arr2(i) & ")"
    .Offset(, 2).Formula = "=SUM(E" & arr1(i) & ":E" & arr2(i) & ")"
    .Offset(, 3).Formula = "=SUM(F" & arr1(i) & ":F" & arr2(i) & ")"
  End With

 Next
 Erase arr1: Erase arr2
End With

End Sub

 

 

_Version _1 _salim.xlsm

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

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

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

Important Information