الاخ الحبيب رفيع
إليك شرح الكود الأول - وكفاية عليا كدا - ..
Sub FilterProduct()
'تعريف المتغيرات
Dim ws As Worksheet
Dim lr, lr2, lr3 As Long
Dim i, y As Integer
'[Data]لورقة العمل التي باسم[ws]تعيين المتغير
Set ws = ThisWorkbook.Sheets("Data")
'تعيين رقم آخر صف به بيانات في العمود الأول
lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
'إيقاف خاصية إهتزاز الشاشة
Application.ScreenUpdating = False
'بدء التعامل مع ورقة العمل
With ws
'مسح النطاق الذي تظهر فيه النتائج
.Range("K3:M1000").ClearContents
'حلقة تكرارية للعمود الثاني والثالث والرابع والخامس
For y = 2 To 5
'[K]متغير لتحديد أول خلية فارغة لطبع النتائج بها في العمود
lr2 = .Cells(Rows.Count, 11).End(xlUp).Row + 1
'حلقة تكرارية في الصفوف ابتداءً من الصف الثالث وحتى آخر صف به بيانات ، مع التخطي 6 خطوات
For i = 3 To lr Step 6
'إذا كانت الخلية التي يظهر بها الثمن ليست فارغة وأكبر من واحد
If .Cells(i + 2, y).Value <> "" And .Cells(i + 2, y) > 1 Then
'تساوي أسماء الأصناف في صفوف الأصناف[K]الخلايا في العمود
.Cells(lr2, 11).Value = .Cells(i, y).Value
'تساوي الكميات في صفوف الكمية[L]الخلايا في العمود
.Cells(lr2, 12).Value = .Cells(i + 1, y).Value
'تساوي الأسعار في صفوف الثمن[M]الخلايا في العمود
.Cells(lr2, 13).Value = .Cells(i + 2, y).Value
'زيادة المتغير بقيمة واحد للانتقال إلى خلية فارغة جاهزة لطبع النتائج بها
lr2 = lr2 + 1
'إذا لم يتحقق الشرط
Else
'يبقى المتغير بنفس القيمة بدون زيادة
lr2 = lr2
End If
Next i
Next y
End With
'إعادة تفعيل خاصية إهتزاز الشاشة
Application.ScreenUpdating = True
End Sub
أرجو أن يكون الشرح واضح وصريح ومش محتاج توضيح
الحلقات التكرارية المتشابكة أو المتداخلة دي لا يتقنها إلا محترف مثل ابن مصر
سلمت يمناك يا ابن مصر