الاستعلام بثلاثة شروط منهم شرط بين تاريخين
احيانا نحتاج الى الاستعلام بعدة شروط
فمثلا : لو لدينا مصنف به عدد 2 شيت خاص بالعملاء
وتم تخصيص أحدهم للبيانات بشكل عام أو لإدخال البيانات
والآخر خاص بالاستعلام
ونريد البحث أو الاستعلام عن بيانات عميل ما ولكن بثلاثة شروط ( اسم العميل ، الصنف ، الفترة بين تاريخين )
بالطبع هناك العديد من الشفرات التى يمكن استخدامها للحصول على النتائج المطلوبة
ولكننا بصدد عرض طريقة تلقائية يمكنك من خلالها تطبيق الشروط الثلاثة فى عملية البحث
بوضع الشفرة البرمجية فى حدث شيت الاستعلام
فعند حدوث أى تغيير طبقا لمعايير البحث يتم جلب البيانات المطلوبة
لنتعرف على الشفرة المستخدمة ثم نقوم بتوضيح بعض النقاط الهامة بها
'فضلا عند استخدامك للشفرات البرمجية يجب ذكر المصدر
'https://elshriefacademy.blogspot.com
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c4:c5,i4,i5")) Is Nothing Then
Application.ScreenUpdating = False
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Target Is emptey Then
Sheet2.Range("b8:i5000").ClearContents
r = 8
For i = 5 To Sheet1.Range("b10000").End(xlUp).Row + 1
Application.ScreenUpdating = False
If Sheet2.Range("c4").Value = "" Then GoTo a
If Sheet2.Range("c4").Value = Sheet1.Cells(i, "e") Then
a:
If Sheet2.Range("c5").Value = "" Then GoTo a1
If Sheet2.Range("c5").Value = Sheet1.Cells(i, "f") Then
a1:
If Sheet2.Range("i5").Value = "" Then GoTo a2
If Sheet2.Range("i5").Value >= Sheet1.Cells(i, "c") Then
a2:
If Sheet2.Range("i4").Value = "" Then GoTo a3
If Sheet2.Range("i4").Value <= Sheet1.Cells(i, "c") Then
a3:
Sheet2.Cells(r, 2) = Sheet1.Cells(i, 3)
For j = 3 To 9
Sheet2.Cells(r, j) = Sheet1.Cells(i, j + 2)
Next j
r = r + 1
End If
End If
End If
End If
Next i
End If
End If
End Sub
السطر التالي من الشفرة أعلاه النطاق ( c4:c5 ) خاص باسم العميل واسم الصنف
و ( i4 ) خاصه بالتاريخ من أى التاريخ الأصغر
و ( i5 ) خاصة بالتاريخ إلي أى التاريخ الأكبر
If Not Intersect(Target, Range("c4:c5,i4,i5")) Is Nothing Then
النطاق المذكور بالسطر التالي خاص بشيت الاستعلام بدء من أول خلية يتم استقبال البيانات فيها
Sheet2.Range("b8:i5000").ClearContents
السطر التالي والمقصود به الصف الثامن بشيت الاستعلام
r = 8
السطر التالي والمقصود به ان بدء البيانات بشيت البيانات من الصف الخامس تحديدا بالعمود ( b ) وحتى نهاية آخر صف به بيانات بهذا العمود من خلال حلقة تكرارية سنستخدمها لجلب البيانات بناء على الشروط أو المعايير الخاصة بالبحث
For i = 5 To Sheet1.Range("b10000").End(xlUp).Row + 1