الاستعلام بثلاثة شروط منهم شرط بين تاريخين

الاستعلام بثلاثة شروط منهم شرط بين تاريخين




احيانا نحتاج الى الاستعلام بعدة شروط
فمثلا : لو لدينا مصنف به عدد 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

Developer MS Office VBA Application, Data Analyst, Designer And Developer of Blogger Templates, Microfinance, HR Specialist, leading businesses, Front End Web Developer.

More About

تعليق واحد

  1. انا مهتم جدا بالاكسل واريد تعلم الكثير عنه ليفيدني في عملي و هذا الموقع من اكثر المواقع افادة