zakwan قام بنشر سبتمبر 17, 2003 قام بنشر سبتمبر 17, 2003 الاخوة الاكارم السلام عليكم ورحمتة وبركاتة اما بعد ... ماهي المعادلة التي يمكن ان تعمل التالي: فالنفرض مثلا لدي هذه الارقام 22.44 او 25.70 او 37.84 او 15.23 مااحتاجة هو معادلة تشاهد بعد الفاصلة وتحسب التالي مابين 1 الى 25(ضع 25) ومن 26 الى 50 (ضع 50) ومن 56 الى 75 (ضع 75) ومن 76 الى 100 يعمل الرقم Rounding اي مثلا : 15.23==>> 15.25 22.44 ==>> 22.50 25.70 ==>> 25.75 37.84 ==>> 38.00 ارجوا الا يكون سؤالي صعب مع الشكر لكم . 1
محمد طاهر عرفه قام بنشر سبتمبر 17, 2003 قام بنشر سبتمبر 17, 2003 و يوجد مثال فى قسم خلاصة مشاركات الاكسيل فى هذا الموضوع طرق مختلفة للتقريب و المتغيرات في الدالة هي الرقم المطلوب تقريبه ثم درجة التقريب و التي هي هنا 0.25
zakwan قام بنشر سبتمبر 20, 2003 الكاتب قام بنشر سبتمبر 20, 2003 استاذي محمد طاهر "حفظة الله" اشكرك على ردك ومساعدتي ولكن يمكن لم اقدر ان اوصل لك طلبي على كل حال وجدت الحل جزئياً وهو كتالي {الرجاء اباء الرأي}: 15.23==>> 15.25 .........>> (Left: Left([15.23],2 (Right: Right([15.23],2 Expr1: IIf([right] Between 1 And 25,25,IIf([right] Between 26 And 50,50,IIf([right] Between 51 And 75,75,IIf([right] Between 75 And 99,1,0)))) Expr2: IIf([Expr1]=1,[Left]+1,IIf([Expr1]<76,([left] & "." & [Expr1]))) ولكن قابلتني مشكلة وهي في حال كان ضمن هذة الارقام رقم ناقص اي(-15.23) فأذا كان بالامكان المساعدة في ذلك
محمد طاهر عرفه قام بنشر سبتمبر 20, 2003 قام بنشر سبتمبر 20, 2003 الدالة الاولي لم تكن أيضا مجهزة للسالب فقمت بتعديلها سريعا و مرفق مثال لتطبيقها فأرجو التجربة مع ملاحظة أن التقريب للرقم كله و ليس للكسر فقط و هذا لن يحدث فرقا فى التقريب الي 0.25 أو 0.5 أو 1 و لكن سيحدث فرق مثلا اذا قربنا الي درجة 0.35 فسيكون للرقم الصحيح تأثير فى التقريب أرجو التجربة و اخباري بالنتيجة و هل أدت الغرض أم لا و هل أداؤها سليم أم لا لأعدلها Function ROUNDTO(MYNO As Double, MyFraction As Double) ' to round up or down with a certain value Dim MYBASE As Double, MYREM As Double If Abs(Round(MyFraction, 2)) <= 0 Then ROUNDTO = MYNO Exit Function End If Dim neg As Boolean neg = False If MYNO < 0 Then neg = True MYNO = Abs(MYNO * 100) MyFraction = MyFraction * 100 MYREM = MYNO Mod MyFraction 'MsgBox "rem : " & MYREM MYBASE = MYNO - MYREM 'MsgBox "Base : " & MYBASE If MYREM > 0 Then If MYREM > MyFraction / 2 Then ROUNDTO = MYBASE + MyFraction Else ROUNDTO = MYBASE End If Else ROUNDTO = MYNO End If ROUNDTO = ROUNDTO / 100 If neg = True Then ROUNDTO = -ROUNDTO End Function
ابو عبدالرحمن قام بنشر أكتوبر 25, 2003 قام بنشر أكتوبر 25, 2003 أحبتي الكرام السلام عليكم ورحمة الله وبركاته لدي مربع نص في نموذج يقوم بعملية حسابية ( القسمة) ويكون الناتج هو عدد عشري . والمطلوب هو كيف يمكن تحويل الناتج من عدد عشري إلى عدد صحيح . بغض النظر عن مقدار العدد العشري ( أي لا أريد التقريب الرياضي المعروف ) بمعنى آخر لو كان الناتج هو 11ر15 كيف أحوله إلى 16 وللجميع مني الشكر الجزيل مقدما
أبو هادي قام بنشر أكتوبر 25, 2003 قام بنشر أكتوبر 25, 2003 السلام عليكم هذه طريقة استخدمها وهي ناجحة جدا دون الحاجة لفحص الكسر أو عمل دالة مستقلة ولكن بشرط أن تكون الدقة لا تزيد عن 14 خانة بعد الفاصلة . الفكرة هو أن أزيد على كل رقم قيمة الثابت Rnd ثم نأخذ قيمة الـ Round للمجموع . طبعا ممكن الوصول للـ Rounding بنفس الدالة أدناه أو بالإصدارات السابقة ممكن تكون عن طريق Clng أو Cint أو Format Sub Rounding_Test() Const Rnd = 0.5 - (1E-16) Dim Num As Double Num = 2.00000000000001 MsgBox Round(Num + Rnd, 0) End Sub تحياتي .
محمد طاهر عرفه قام بنشر أكتوبر 25, 2003 قام بنشر أكتوبر 25, 2003 تم تعديل المثال ( تعديل الدالة ) التقريب بدرجة محددة و اضافة التقريب الي الاعلي فقط بدرجة محددة و تقريب الكسور الي الأعلي و يلاحظ أن الارقام السالبة نعتبر قيمة التقريب لها أيضا بالسالب Myround2.rar
محمد طاهر عرفه قام بنشر أكتوبر 25, 2003 قام بنشر أكتوبر 25, 2003 (معدل) قمت بتعديل المثال السابق و قسمته الي 3 دوال الاولي تقرب الرقم بدرجة تقريب محددة و الثانية تقريب الرقم الي الاعلي دائما أيضا بدرجة تقريب محددة و الاخيرة تقرب الكسور الي الاعلي فقط اخي ابو هادي ، هل ممكن تفصل الطريق التي شرحتها فى المشاركة السابقة شوية زيادة :d تم تعديل نوفمبر 28, 2003 بواسطه امير عاطف
أبو هادي قام بنشر أكتوبر 26, 2003 قام بنشر أكتوبر 26, 2003 (معدل) السلام عليكم أخي محمد .. أنا آسف لم ألحظ السطر الأخير من ردك إلى مؤخرا :SHY: من المعروف أنه ابتداء من 0.5 وما فوق تجبر إلى واحد عند التقريب . وما أضيفه أنا على أي رقم قبل تقريبه هو 0.49999999999999 حيث لن يؤثر على أي رقم صحيح يعني تقريب 1.4999999999999999 مثلا سيصبح 1 ولكن هذ الرقم لو أضيف الى 1.00000000000001 فسيصبح مجموعه 1.5 وسيقرب ليصبح ناتجه 2 . وهذ كل ما أفعله أن أضيف الثابت Rnd إلى كل رقم أود تقريبه لأحصل على ناتج مايسمى في الأكسل بالـ Roundup . تحياتي . تم تعديل أكتوبر 26, 2003 بواسطه أبو هادي
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.