اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

الملف المرفق يقوم بتحويل اللحروف A, B, C , D, E.  إلى ارقام  90, 80, 70, 60, 50

عند تنفيذ الكود بعطى رسالة خطأ

يوجد بالمرفق اربع أسماء لنطاقات اربع

احدهما

 

Term_2=OFFSET(AliElbasry!$L$2;0;0;COUNTA(AliElbasry!$L:$L)-1)

 

 

فكيف يمكن التغلب على هذه المشكلة

وهل يمكن كتابة الكود بشكل مختصر

 

 

DDDDDD.rar

قام بنشر

أخي الكريم علي المصري ...

الخطأ الموجود في المرفق ليس سببه لا معادلات في ورقة العمل حيث لا توجد معادلات من الأصل في ورقة العمل ، ولا من النطاقات المسماة فقد قمت بمراجعتها ووجدت أنه ليس بها خطأ ..

الخطأ سببه الـرسم البياني لديك ..

عند فتح ملفك ومحاولة الحفظ تظهر الرسالة وعند تنفيذ الكود تظهر الرسالة ... وعندما حذفت الرسم البياني قام الملف بالحفظ واختفت الرسالة ..

لا أدري ما الخلل في الرسم البياني ..عموماً جرب تحذف الرسم البياني ثم قم بإدراجه مرة أخرى ..

تقبل تحياتي

قام بنشر

شكرا جزيلا أستاذ ياسر على اهتمامك

عند استخدام المعادلات

إذا كانت القائمة بالأسماء 30 اسم مع بيانتهم لا يوجد مشكلة

اما اذا كان في الصف 24 طالب مثلا نجد ان الرسم البياني به جزء فارغ

انا لا اريد هذا الفراغ

Picture2.jpg

قام بنشر

أخي الفاضل على المصري

صراحة ليس لي خبرة في التعامل مع الرسوم البيانية .. ممكن تذكر الخطوات التي اتبعتها لعمل الرسم البياني فلربما أستطيع اكتشاف الخطأ ... فقط أعطني الأساس في التعامل مع الرسوم البيانية بهذا الشكل؟

 

قام بنشر

Term_1 =OFFSET(AliElbasry!$I$2;0;0;COUNTA(AliElbasry!$I:$I)-1)

final=OFFSET(AliElbasry!$L$2;0;0;COUNTA(AliElbasry!$L:$L)-1)

MyNumbers==OFFSET(AliElbasry!$G$2;0;0;COUNTA(AliElbasry!$G:$G))

Term_2=OFFSET(AliElbasry!$J$2;0;0;COUNTA(AliElbasry!$J:$J)-1)

Term_3=OFFSET(AliElbasry!$K$2;0;0;COUNTA(AliElbasry!$K:$K)-1)

 

 

 اما الرسم البياني

قمت بتحديد النطاق من  G1  إلى K31 ثم ادراج رسم بياني

كليك يمين واختيار من القائمة تحديد البيانات ( select data )

تظهر الشاة التالية

 

Picture3.jpg

قام بنشر

أخي الكريم علي المصري ..

فيما يبدو لي أن المشكلة في عدم اكتمال البيانات بشكل صحيح ...لابد من اكتمال البيانات في الأعمدة المشار إليها في الرسم البياني

جرب الملف التالي قمت بتغيير النطاقات المسماة (مجرد تغيير لا أدري إذا كان سبب في المشكلة أم لا) وقمت بوضع بعض البيانات في الورقة في الأعمدة الفارغة

حمل الملف من هنا

قام بنشر

ثم حذف esis من الطرف اليسار واختيار T1 ثم تعديل وكتابة قيم السلسة عبارة عن  الاسم Term_1 الموضح في بداية الرد وكذلك بالمثل ل T2 ,  T3   ,  Final

ثم في الجزء اليمين عملت تعديد وكتبت به الاسم  MyNumbers

فيصبح الرسم البياني ذو نطاق ديناميكي

وهذا ما اتمناه بالفعل ولكن المشكلة كما وضح في الرد السابق مع كتابة المعادلات في الخلايا

المرفق الذي تكلمت عنه بالشرح

AAAA.rar

قام بنشر (معدل)

شكرا اخي ياسر

تم حل المشكلة كالتالي:

قمت بعمل End لكل If  لحالها

كالتالي :

Sub DoMyOrder()
Dim R As Integer
For R = 2 To 31

If Sheet1.Cells(R, 2) = "" Then
Sheet1.Cells(R, 9) = ""

ElseIf Sheet1.Cells(R, 2) = "A" Then
Sheet1.Cells(R, 9) = "90"

ElseIf Sheet1.Cells(R, 2) = "B" Then
Sheet1.Cells(R, 9) = "80"

ElseIf Sheet1.Cells(R, 2) = "C" Then
Sheet1.Cells(R, 9) = "70"

ElseIf Sheet1.Cells(R, 2) = "D" Then
Sheet1.Cells(R, 9) = "60"

ElseIf Sheet1.Cells(R, 2) = "E" Then
Sheet1.Cells(R, 9) = "50"

End If

'================================

If Sheet1.Cells(R, 3) = "" Then
Sheet1.Cells(R, 10) = ""

ElseIf Sheet1.Cells(R, 3) = "A" Then
Sheet1.Cells(R, 10) = "90"

ElseIf Sheet1.Cells(R, 3) = "B" Then
Sheet1.Cells(R, 10) = "80"

ElseIf Sheet1.Cells(R, 3) = "C" Then
Sheet1.Cells(R, 10) = "70"

ElseIf Sheet1.Cells(R, 3) = "D" Then
Sheet1.Cells(R, 10) = "60"

ElseIf Sheet1.Cells(R, 3) = "E" Then
Sheet1.Cells(R, 10) = "50"

End If

'==============================

If Sheet1.Cells(R, 4) = "" Then
Sheet1.Cells(R, 11) = ""

ElseIf Sheet1.Cells(R, 4) = "A" Then
Sheet1.Cells(R, 11) = "90"

ElseIf Sheet1.Cells(R, 4) = "B" Then
Sheet1.Cells(R, 11) = "80"

ElseIf Sheet1.Cells(R, 4) = "C" Then
Sheet1.Cells(R, 11) = "70"

ElseIf Sheet1.Cells(R, 4) = "D" Then
Sheet1.Cells(R, 11) = "60"

ElseIf Sheet1.Cells(R, 4) = "E" Then
Sheet1.Cells(R, 11) = "50"

End If

'========================

If Sheet1.Cells(R, 5) = "" Then
Sheet1.Cells(R, 12) = ""

ElseIf Sheet1.Cells(R, 5) = "A" Then
Sheet1.Cells(R, 12) = "90"

ElseIf Sheet1.Cells(R, 5) = "B" Then
Sheet1.Cells(R, 12) = "80"

ElseIf Sheet1.Cells(R, 5) = "C" Then
Sheet1.Cells(R, 12) = "70"

ElseIf Sheet1.Cells(R, 5) = "D" Then
Sheet1.Cells(R, 12) = "60"

ElseIf Sheet1.Cells(R, 5) = "E" Then
Sheet1.Cells(R, 12) = "50"


End If


Next

End Sub

بارك الله فيك

لقد توصلت لها من خلال الرد الأخير الخاص بحضرتك

 

شكرا جزيلاً

تم تعديل بواسطه علي المصري
  • Like 1
قام بنشر

اخي علي

بدل هذا الكود الطويل جداً الملي بالشروط و الاستنتاجات

اقترح علبك هذا الكود البسيط (جربه  ولن نتدم) لانه لا يفرق بين الحرف الصغير a و الحرف الكبير A

Sub DoMyOrder()
Dim R As Integer
Application.ScreenUpdating = False
 Sheets("Sheet1").Range("i2:l31").ClearContents
For R = 2 To 31
        For t = 2 To 5
              With Sheets("Sheet1")
                  Select Case UCase(.Cells(R, t).Value)
                        Case "A"
                          .Cells(R, t + 7) = 90
                        Case "B"
                          .Cells(R, t + 7) = 80
                        Case "C"
                          .Cells(R, t + 7) = 70
                        Case "D"
                          .Cells(R, t + 7) = 60
                        Case "E"
                          .Cells(R, t + 7) = 50
                        Case Else
                          .Cells(R, t + 7) = ""
                   End Select
              End With
        Next
 Next
 Application.ScreenUpdating = True
 End Sub

 

  • Like 1
قام بنشر

شكرا استاذ سليم

جزاك الله خبرا

كود ممتاز

Dim R As Integer
Application.ScreenUpdating = False
 Sheet1.Range("I6:L35").ClearContents
For R = 6 To 35
        For t = 4 To 7
              With Sheet1
                  Select Case UCase(.Cells(R, t).Value)
                        Case "A"
                          .Cells(R, t + 5) = 90
                        Case "B"
                          .Cells(R, t + 5) = 80
                        Case "C"
                          .Cells(R, t + 5) = 70
                        Case "D"
                          .Cells(R, t + 5) = 60
                        Case "E"
                          .Cells(R, t + 5) = 50
                        Case Else
                          .Cells(R, t + 5) = ""
                   End Select
              End With
        Next
 Next
 Application.ScreenUpdating = True

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information