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

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

قام بنشر

السلام عليكم قمت بعمل برنامج يتكون من ملف رئيسي فيه كل المحافظات وهذا الملف يقوم بجلب البيانات من عدة ملفات كل ملف يعبر عن اصوات الكيانات السياسية الداخلة في الانتخابات في محافظة معينة في العراق حيث ان نظام الانتخابات هو نظام سانت ليغو يقوم على اساس تقيم اصوات كل كيان سياسي على الاعداد الفردي 1و3و5و7و9و11و13و15و17و19و21و23  وهكذا وبالتالي يتكون جدول في العمود الاول اسم الكيان السياسي والعمود الثاني عدد اصواته الكلي وباقي الاعمدة نواتج قسمه اصوات الكيان الكلي على الاعداد الفردية اعلاه يقوم البرنامج بعد جلب البيانات بوضعها في الجدل ويستخرج اعلى 25 او 26 رقم من الجدول طبعا حسب مقاعد كل محافظة وهذا عملته في البرنامج كلة بواسطة المعادلات والصيغ الشريطية حيث يقوم البرنامج بترتيب الكينات من الاعلى الى اقل الكيانات اوتو بدون عمل يدوي اوعمل sort ويقسم ويوزع المقاعد الفائزة المشكلة الوحيدة التي واجهتي هي حساب عدد الخلايا التي اصبحت من ضمن الصيغ الشريطية اي عدد المقاعد طبعا سهل يدويا بس اريدة تحدث العملية اوتو مثل باقي الاجراءات هذا ولكل اعضاء هذا المنتدى الرائع جزيل الشكر والتقدير

  • Like 1
قام بنشر

الاخ العزيز اشكرك على متابعة الموضوع وسوف ارتب الملف وارسلة لان حجم الملف كبير ومرتبط بعدة ملفات بالنسبة للبيانات سوف تكون حقيقة لانها معلنه اصلا وهي نتائج انتخابات مجالس المحافظات في العراق

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

http://www.hello-iraq.com/up/up_down/20012013d0a6d6011dbda5811872bf24.rar

 الاخ الاستاذ محمد هذا الرابط مباشر فية جزء من البرنامج لان واجهتي مشكلة بتحميل الملف هذا ولكم جزيل الشكر والتقدير

تم تعديل بواسطه احمد برمجة
  • 2 weeks later...
قام بنشر (معدل)

ضع هذه المعادلة فى ( m9 ) وسحبها لأسفل ربما تحقق المطلوب

=COUNTIF(D9:L9;">"&$L$9)

عد قيم ينطبق عليها الشرط.rar

تم تعديل بواسطه جمال عبد السميع
قام بنشر

الاستاذ القدير جمال شكرا على الرد العلمي الجميل ومعادلة تنم عن خبرة ولكن لاتعمل اوتو ففي حالة زيادة عدد اصوات لاي كيان في القائمة فلا تعطي عدد مقاعده المضبوط حيث ان عدد المقاعد هو ثابت في كل محافظة وهنا عدد المقاعد هو 31 مقعد مرة اخرى اقدم شكري وامتناني لك استاذي ولكل الاعضاء الكرام وفقكم الله وجعله في صالح اعمالكم

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

شكرا شكرا استاذ جمال وبارك الله بك  واني خجلان منك لانه مجهودك كبير وتعبتك معي لكن استاذي المعادلة تعمل اوليا والظاهر انها تعتمد على اكبر الارقام ولاتعتمد على التغير الذي يحصل في التنسيق الشريطي في حالة اعطاء قائمة علراق الخير والعطاء 150000 الف صوت مثلا انظر ماذا يحصل تتغير عدد مقاعد كل الكتل ولكن المعادلة لاتتغير من ناحية عدد المقاعد

تم تعديل بواسطه احمد برمجة
  • 3 months later...
قام بنشر · مخفي بواسطه الـعيدروس, سبتمبر 29, 2013 - تم التصحيح بالمشاركة التي بعدها مباشرة
مخفي بواسطه الـعيدروس, سبتمبر 29, 2013 - تم التصحيح بالمشاركة التي بعدها مباشرة

السلام عليكم

بعد اذن الاستاذ جمال عبدالسميع

 

لا اعلم ان كنت وفقت في فهم الطلب

إستخدم هذه الدالة المعرفه وان طالت قليلاً 

المرفق الاول الشرح

المرفق الاخر الملف

عدل عدد المقاعد في حال تغير الاإفتراضي هو 31

Private Const num As Integer = 31
Public An() As Variant
Public Vb() As Variant
'********************************
' عدد المقاعد
Private Const num As Integer = 31
Private Function L_Ali(Rng As Range)
Dim Dn As Range
Dim Rr As Range
On Error Resume Next
ii = num
Ali_Dn Rng, ii
For Rb = 0 To UBound(An)
  For Each Dn In Rng
    If An(Rb) = Dn.Value Then
    ReDim Preserve Vb(0 To n)
      Vb(n) = Dn.Value
      n = n + 1
    End If
  Next
Next
End Function
Private Function Ali_Dn(Rng As Range, ii) As Variant
Dim i
i = ii
Do Until i = 0
 d = Application.Large(Rng, i)
  ReDim Preserve An(0 To x)
  An(x) = d
  x = x + 1
i = i - 1
Loop
End Function
Public Function Ali_Count(my_rng As Range, R As Range) As Integer
Dim it As Range
Dim Coun
L_Ali my_rng
For ix = 0 To UBound(Vb)
For Each it In R
 If Vb(ix) = it.Value Then
  Coun = Coun + 1
 End If
Next
Next
If Coun Then Ali_Count = Coun
Erase An: Erase Vb
End Function

تحياتي

شرح_دالة.rar

عد قيم ينطبق عليها الشرط_A.rar

قام بنشر

السلام عليكم

 

أو هكذا لخصنا المعادلة وتأدي نفس الغرض

 

إنشئ مودويل وإلصق الدالة المركبة التاليه

 

إستدعيها من الخلية "M9" وإسحب للاسفل بالشكل التالي

=Ali_Cnt(D9:L9)
'*********************************
' عدد المقاعد
Private Const Mxn As Integer = 31
'*********************************
Public Function Ali_Cnt(Arn As Range) As Integer
Dim Rng As Range
Dim i%, C&, j#
Application.Volatile
  On Error Resume Next
Set Rng = Range("D9:L50000")
For i = 1 To Mxn
    j = Application.Large(Rng, i)
    If Application.CountIf(Arn, j) = 1 Then C = C + 1
Next i
  On Error GoTo 0
If C Then Ali_Cnt = C Else Ali_Cnt = 0
End Function

في امان الله

  • Like 1
  • 3 months later...

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