اذهب إلى المحتوى

السؤال

نشر

السلام عليكم اريد كتابه داله لحساب رينج معين للأرقام 

مثلا لدي عمود به كذا مودل وكل مودل له رقم يدل علي قدره 

اريد عند إدخال رقم ف الخليه الزرقاء يظهر لي رينج من المودلز مثلا ادخل 6 فيجب ان يفلتر الجدولاو يظهر جدول اخر للأرقام بين 5الي 7 مع اظهار اسم كل مودل مكافئ للرقم 

اقصد انه ينقص من الرقم ١ ويزيد ٢ هذا هو الرينج

كيف اقوم بفعل ذلك 

IMG-20241126-WA0008.jpg

Recommended Posts

  • 0
نشر

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

يمكنك إستخدام الدالة FILTER في Excel ولكن إنتبه أن هذه الدالة قد تم إضافتها منذ إصدار 2021 فلو كنت تستخدم Excel 2019 أو Excel 2016، فلن تكون هذه الدالة متوفرة. 

في المكان الذي تريد فيه إظهار إسم الوحدة (Unit) يمكنك كتابة الكود التالي :

=FILTER(A2:A100, (B2:B100 >= D4-1) * (B2:B100 <= D4+2))

هنا A2:A100 هو النطاق الذي سيتم الفلترة به بناء على الشرط الذي يليه وهو (B2:B100 >= D4-1) * (B2:B100 <= D4+2) أي أننا نقوم بالبحث في الخلايا من B2 حتي B2 ونقوم بالمقارنة بالقيمة التي في D4 وهي المربع الأزرق الذي سوف تقوم بكتابة الرقم للفلترة به . وهكذا سيتم إنشاء خلايا جديدة في الجدول الجديد بناء على الفلترة .

وفي المكان الذي تريد إظهار ال Power فيه نقوم بكتابة الكود التالي :

=FILTER(B2:B100, (B2:B100 >= D4-1) * (B2:B100 <= D4+2))

هنا نقوم بنفس العمل السابق ولكننا سنفلتر الخلايا من B2 حتى B100 .

وهكذا سيعمل معك الدوال السابقة ولكن تأكد من النطاقات الصحيحة لديك وأسماء الخلايا .  

  • 0
نشر

يمكننا استخدام لغة البرمجة Excel VBA لإنشاء دالة لحساب نطاق المودلات المناسبة بناء على القيمة المدخلة في الخلية الزرقاء على هذا النحو:

Sub FindMatchingModels()
    Dim inputValue As Double
    Dim range As Range
    Dim foundRange As Range
    
    inputValue = Range("B2").Value
    
    Set range = Range("A1:B20")
    Set foundRange = range.Find(What:=inputValue, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
    
    If Not foundRange Is Nothing Then
        Dim startRow As Long
        Dim endRow As Long
        startRow = foundRange.Row - 1
        endRow = foundRange.Row + 1
        
        Range("D1").Value = "Unit"
        Range("E1").Value = "RC in KW"
        Range("D2:E" & endRow - startRow + 2).Value = Application.Transpose(range.Rows(startRow & ":" & endRow))
    Else
        MsgBox "لا يوجد مودلات مطابقة للقيمة المدخلة."
    End If
End Sub

لاستخدامه يجب القيام بإدخال القيمة المطلوبة في الخلية الزرقاء الخلية B2 مثلا ثم نقوم بتشغيل الماكرو "FindMatchingModels" بعدها سيتم عرض نطاق المودلات المناسب في جدول منفصل، وهذه الدالة تسمى "FindMatchingModels" وهي مصممة لتحديد نطاق المودلات المناسب بناء على القيمة المدخلة في الخلية الزرقاء في البداية الدالة تحصل على القيمة المدخلة في الخلية B2 وتخزنها في متغير "inputValue" ثم تقوم الدالة بالبحث عن هذه القيمة في جدول المودلات الموجود في نطاق الخلايا A1:B20 وتستخدم دالة "Find" لإيجاد أقرب قيمة مطابقة في الجدول فإذا تم العثور على قيمة مطابقة، فإن الدالة تحسب النطاق المناسب للمودلات عن طريق اختيار الصف الذي يحتوي على القيمة المطابقة، وكذلك الصفين السابق واللاحق له وفي النهاية يتم عرض نطاق المودلات المناسب في جدول منفصل في ورقة العمل وإذا لم يتم العثور على قيمة مطابقة ستلاحظ ظهور رسالة توضيحية.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...