logo

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



أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





01-01-2018 03:13 مساءً
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
السلام عليكم ورحمة الله وبركاته

أهلاً بكم ومرحباً إخواني وأحبابي في الله ، ومع موضوع جديد وشيق ، حيث سنقوم بترتيب الأعمدة باستخدام المصفوفات

صدعتكم بالمصفوفات والكلام عن المصفوفات ، ولكن ما يدفعني إلى شرح المصفوفات والتعامل معها هو فقر المحتوى العربي من الدروس في هذا الجانب الهام من التعامل مع الأكواد
النهاردة يا رجالة هناخد مثال بسيط جداً عشان عارف إن الأمثلة المعقدة مش هتفيدنا ، وبدايةً أحب أعرفكم على البيانات قبل ما نتعامل مع الأكواد ، ودا جانب مهم ، لازم تدي شوية وقت تبص فيهم على الهيكل العام للبيانات لأن دا مهم جداً في التعامل مع أي مشكلة ، عشان كدا هشرح لكم بالوصف والصورة
نفترض أن عندك نطاق من أول الخلية A1 إلى الخلية F10 ، دول كدا كام صف ؟ 10 صفوف !! وكام عمود ؟ 6 أعمدة .. تمام التمام
وأول صف مفترض أنه يكون صف لعناوين الأعمدة دي ..أنا سميت العناوين بشكل بسيط عشان نعرف إحنا هنرتب إزاي زي ما هو واضح في الصورة
NDMyNTQ3MQ3636001
في العناوين كتبت العناوين بشكل غير مرتب 6 - 2 - 3 - 1 - 5 - 4 .. حلو الكلام ؟! قول حلو
دا كدا الشكل العام والهيكل العام للبيانات

** نيجي للمطلوب ، والمطلوب زي ما هو واضح في العنوان إننا نرتب الأعمدة دي بالشكل اللي إحنا عايزينه .. نترجم الكلام دا الأول قبل ما نبدأ نشوف الكود
يعني العنوان Header1 موجود في العمود الرابع ، ومطلوب يكون دا هو العمود الأول .. يبقا نعمل ايه ؟ بشكل مبدئي نخلي أول رقم عايزينه هو 4
طيب والعنوان Header2 موجود في العمود التاني ، ومطلوب يكون دا هو العمود التاني .. بنفس المبدأ نخلي تاني رقم عايزينه هو 2 (دا مفيش فيه تغيير في الترتيب)
العنوان Header3 زي ما هو بردو في نفس ترتيبه ، فياخد الرقم 3 (بردو نفس الكلام مفيش تغيير في الترتيب)
ناخد مثال أخير العنوان Header4 موجود في العمود السادس ، ومطلوب يكون في العمود الرابع .. يبقا نخلي رابع رقم هو 6
وهكذا .. نشوف صورة عشان نفهم الترتيب الجديد هيكون إزاي (صورة ملخبطة يا رب تفهموها لأني أنا نفسي مفهمتش اتعملت مني إزاي blink )
MTAzNzQx002

خلاصة الرغي دا كله .. إحنا عايزين أرقام الأعمدة المطلوبة بالشكل اللي إنت عايزه وهيكون زي ما هو موجود في الصورة بنفس الترتيب ده 4 - 2 - 3 - 6 - 5 - 1

** بعد ما عرفنا المعطيات والهيكل العام للبيانات وعرفنا المطلوب .. نيجى لأسهل مرحلة وهي كتابة الكود (أيوا أسهل مرحلة لو فهمت المشكلة كويس) .. كل اللي علينا إننا نترجم الكلام دا لكود ودا هنتعلمه لو في نيتنا نتعلمه .. أيوا والله زي ما بقولكم كدا
أول جزء في الكود جزء تقليدي وهو تعريف المتغيرات وفيه ناس كتير بتهمله لكن أنا أبداً محبش أهمله أبداً أبداً ، ومش هتناقش في القضية دي
الكود فيه متغيرين وبس .. متغير هيمثل نطاق البيانات وهيكون اسمه r ودا اختصار كلمة range ، طبعاً التسمية اختيارية
والمتغير التاني هيمثل المصفوفة اللي هنخزن فيها البيانات ودا اسمه a ودا اختصار كلمة array ، وزي ما قلت التسمية اختيارية .. عشان محدش يعترض

MjM0NDgx003
نبدأ نشوف المنطق في كتابة الكود .. أول شيء إحنا هنتعامل مع نطاق محدد والنطاق دي بيبدأ من الخلية A1 وبينتهي في الخلية F10 بس طبعاً أثناء تعيين قيمة للمتغير r هنخلي النطاق مرن من ناحية عدد الصفوف ، ودا السطر اللي من خلاله بنعين النطاق المطلوب التعامل معاه
CODE
Set r = Sheets("Sheet1").Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row)


بالنسبة لتعيين النطاق بنستخدم كلمة Set لأن النطاق دا كائن Object ، وبعد علامة يساوي بنحدد ورقة العمل ، ونحدد النطاق بدايته ونهايته ، وهنا الرقم 10 اللي هو آخر النطاق استبدلناه بجملة من خلالها نقدر نعرف رقم آخر صف للنطاق ده بدل ما نكتبه بشكل مباشر .. واللي يحب يعرف التفاصيل الخاصة بهذه الجزئية يروح للموضوع دا من هنا

دلوقتي نيجي لأهم سطر في الكود وهو لب الموضوع ، واللي عشانه اتعمل الموضوع دا بالكامل ، فيا ريت نركزشوية عشان نفهم السطر دا كويس
CODE
a = Application.Index(r.Value, Evaluate("ROW(1:" & r.Rows.Count & ")"), [{4,2,3,6,5,1}])


نبدأ نترجم السطر دا لكلام مفهوم ومهضوم ، إحنا هنا هنقوم بتخزين البيانات داخل مصفوفة وفي نفس ذات الوقت هنعيد ترتيب البيانات (يعني زي ما بيقولوا : بلحتين بحجر واحد 63 )
الجزء المسئول عن تخزين بيانات النطاق الأصلي هو r.Value (أيوا هو الجزء ده اللي هيكون من خلاله كل البيانات متخزن داخل المصفوفة)
طيب بقية الكود : مسئول عن ترتيب الأعمدة ، ودا نقدر نعمله استخدام دالة INDEX (وكتير منا يعرفها من خلال ورقة العمل .. بصوا على الصورة عشان تعرفوا البارامترات الخاصة بالدالة)
NDI2NjQ5MQ8484004
وهو دا بالظبط اللي عملناه .. المصفوفة المخزنة array هي المصفوفة المخزن فيها البيانات اللي هي r.Value

أرقام الصفوف المطلوبة هنستخرجها من خلال الجزء ده
---------------------------------------------------
CODE
Evaluate("ROW(1:" & r.Rows.Count & ")")

طيب الدالة Evaluate دي بتعمل ايه ؟ دي بالظبط كأنك بتكتب معادلة بس في الكود ، والمعادلة هنا بسيطة جداً .. يعني شكل المعادلة في ورقة العمل لو أخدنا الجزء ده وحبينا نعمله كمعادلة في ورقة العمل هيكون بالشكل ده
بنشيل كلمة Evaluate والقوس المفتوح وعلامة التنصيص ........... وعلامة التنصيص والقوس المقفول ، ونحط مكانهم علامة يساوي = g
ونشيل الجزء ده r.Rows.Count (ودا اللي بنعرف من خلاله عدد صفوف النطاق) ، وبنشيل معاه علامة التنصيص وعلامة & اللي قبلها ، وكمان بنشيل علامة & والتنصيص اللي بعدها ، ونضع مكانه الرقم 10 .. فتكون المعادلة بالشكل ده
CODE
=ROW(1:10)<br />

لو كتبا المعادلة في ورقة العمل وحددنا المعادلة في شريط المعادلات ، وضغطنا F9 من لوحة المفاتيح هيطلع لنا ايه؟ هيطلع الناتج بالشكل ده
CODE
={1;2;3;4;5;6;7;8;9;10}<br />

معنى الكلام دا ايه ؟ >>> معناه إنه سيتم استخراج الصفوف كلها داخل النطاق من أول الصف رقم 1 إلى الصف رقم 10

أرقام الأعمدة المطلوب استخراجها
--------------------------------
البارامتر التالت هو المسئول عن الأعمدة واستخدمنا هنا [ ] ودي بالظبط زي Evaluate بس أسهل منها لأن Evaluate بييجي وراها قوس مفتوح وقوس تنصيص وفي آخرها قوس تنصيص وقوس مقفول ..
يعني دول
CODE
Evaluate(" &hellip;&hellip;&hellip;")
بيساووا دول
CODE
[ ………]


بالنسبة لأرقام الأعمدة وضعناها داخل أقواس بهذا الشكل { } ودي كأنها مصفوفة بردو
CODE
[{4,2,3,6,5,1}]<br />


طيب سؤال قبل ما نختم الموضوع الدسم ده . هل لازم أكتب كل الأعمدة الموجودة؟ الإجابة : كلا البتة .. ممكن تختار أعمدة معينه فقط ، يعني الكود مرن في نهاية المطاف

** آخر جزئية وهي وضع المصفوفة الجديدة في أي مكان نريده ، وهنفترض إننا عايزين البيانات توضع في الخلية J1 كبداية .. فالسطر هيكون بالشكل ده
CODE
Range("J1").Resize(UBound(a, 1), UBound(a, 2)).Value = a

بنحدد خلية البداية وبعدها بنستخدم كلمة Resize عشان نحدد أبعاد النطاق الجديد اللي هتوضع فيه البيانات ، وكلمة Resize يليها عدد الصفوف ، وعدد الأعمدة ..
عدد الصفوف هيكون نفس عدد صفوف المصفوفة ودا الجزء المسئول عنه
CODE
UBound(a, 1)<br />

عدد الأعمدة هيكون نفس عدد أعمدة المصفوفة ودا الجزء المسئول عنه
CODE
UBound(a, 2)<br />


وبعد ما حددنا أبعاد النطاق اللي هتوضع فيه النتائج بنستخدم الخاصية Value ونقول إنها هتساوي المصفوفة a ...

أرجو أن أكون وفقت في شرح الكود ، وأن تكونوا قد استوعبتم الدرس جيداً
وأخيراً إليكم الكود بالشكل الكامل له
CODE
Sub Reorder_Columns_Using_Arrays()
    Dim a           As Variant
    Dim r           As Range

    Set r = Sheets("Sheet1").Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row)
    a = Application.Index(r.Value, Evaluate("ROW(1:" & r.Rows.Count & ")"), [{4,2,3,6,5,1}])
    Range("J1").Resize(UBound(a, 1), UBound(a, 2)).Value = a
End Sub



حمل الملف المرفق من هنا

كان معكم أخوكم في الله / ياسر خليل أبو البراء
والسلام عليكم ورحمة الله وبركاته
 
 


أثارت هذه المشاركة إعجاب: hassona229،



look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 06:12 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 247
المشاركات : 202
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 13-4-1966
قوة السمعة : 613
الاعجاب : 0
السلام عليكم ورحمة الله تعالى وبركاته

بارك الله فيك أستاذنا الفاضل وجزاك الله عنا خير الجزاء




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 07:52 مساءً   [2]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
وعليكم السلام أخي العزيز محمد أبو عبدو
وجزاك الله خيراً على مرورك العطر وكلماتك الطيبة




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 08:07 مساءً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 163
المشاركات : 227
رصيد العضو : 0
الجنس :
الدعوات : 4
قوة السمعة : 2153
الاعجاب : 22
السلام عليكم اخى الكريم ياسر
جعله الله فى ميزان حسناتك
سلمت يداك




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 09:06 مساءً   [4]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 834
رصيد العضو : 0
الدولة : الاردن
الجنس :
تاريخ الميلاد : 9-9-1990
الدعوات : 2
قوة السمعة : 988
الاعجاب : 0
استاذ ياسر انا كيف بدي احدد عدد المتغيرات الي محتاجها




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 11:11 مساءً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 14
المشاركات : 1309
رصيد العضو : 0
الدولة : مصر
الجنس :
تاريخ الميلاد : 4-7-1990
الدعوات : 59
قوة السمعة : 4570
الاعجاب : 0
موقعي : زيارة موقعي
والله موضوع رائع وبسيط وسمبل بس لو افهم الدالة Evaluate يكون الاكل استوى في راسي لسه مش راضيه تركب معايا يمكن لان ذهنى مشغول ولانى اريد معرفة الغرض منها جيدا وليس مجرد انها لابد من وجودها بالكود ويمكن الاستغناء عنها بالشيت "ولان الغرض التعلم احاول واطلب شرح ادق لها بعد اذنك " على المعموم اجرب افهماها بوقت اخر واضع الكود بالمرجعيات عندى بعدها فأنت من تعلمنا ان نصتاد قبل ان نأكل فتحياتى وتقديرى معلمي العظيم

ملحوظة هامة جدا جدا جدا جدا انا منشيتش وعدك الخاص بمكتبة الاكواد 850 كود يااااااااه مستنى الاحظة الى اشوفهم فيها



توقيع :محمود ابو الدهب
لى عظيم الشرف بالانضمام لهذا الصرح العظيم
وكم أتمنى من الله
ان يعيننى ويعلمنى من علمة الواسع فهو ولي ذالك وهو على كل شي قدير

تحياتى وتقدير للجميع  محمود ابوالدهب

look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  01-01-2018 11:39 مساءً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 705
المشاركات : 440
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 2-2-1990
قوة السمعة : 657
الاعجاب : 0
موضوع ااكثر من رائع وده يعتبر استدعاء مرن لكن لو تضع فيه شرط للاستدعاء .. مع المزايا الموجوده في الكود يبقى الكود غايه في المرونه والسهوله والسرعه
جزاك الله الف الف خير استاذ ياسر خليل




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  02-01-2018 06:53 صباحاً   [7]
معلومات الكاتب ▼
تاريخ الإنضمام : 04-09-2017
رقم العضوية : 337
المشاركات : 87
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 14-5-1963
قوة السمعة : 164
الاعجاب : 0
بارك الله فيك استاذنا العزيز ونفعنــا بعلمك




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  02-01-2018 07:59 صباحاً   [8]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1824
رصيد العضو : 0
الجنس :
الدعوات : 21
قوة السمعة : 20048
الاعجاب : 12
موقعي : زيارة موقعي

لما نقول ابداع يبقى لازم نقول @YasserKhalil
بارك الله فيك ونفع بك
فى ميزان حسناتك يارب




توقيع :الصقر

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


look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  02-01-2018 11:44 صباحاً   [9]
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 202
المشاركات : 36
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 29-1-1974
قوة السمعة : 107
الاعجاب : 0
استاذنا الغالى والله نحن عاجزين عن الشكر لكثرة ابداعاتك ... ربنا يزيدك من علمه وينفعك بما علمك ويعلمك ما ينفعك وايانا




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  02-01-2018 09:31 مساءً   [10]
معلومات الكاتب ▼
تاريخ الإنضمام : 24-08-2017
رقم العضوية : 88
المشاركات : 8
رصيد العضو : 0
الجنس :
قوة السمعة : 20
الاعجاب : 0
السلام عليكم ورحمة الله تعالى وبركاته
بصراحه منتهى الروعه والسلاسه




look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  04-01-2018 09:54 صباحاً   [11]
معلومات الكاتب ▼
تاريخ الإنضمام : 24-08-2017
رقم العضوية : 84
المشاركات : 247
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 24-9-1981
الدعوات : 1
قوة السمعة : 350
الاعجاب : 6
اخى وستاذى ياسر خليل
بصراعه دائما ما نستمتع
بمواضيعك الشيقه
وشرحك المميز
بارك الله فيك
تقبل تحياتى



توقيع :EM_ACC
إبراهيم أبوليله

look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
  07-01-2018 08:10 مساءً   [12]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
بارك الله فيكم إخواني الكرام وجزاكم الله خيراً على كلماتكم الطيبة ودعائكم الطيب ومروركم العطر .. فلقد أثلجتم صدري بردودكم الطيبة

بالنسبة لعدد المتغيرات يختلف حسب الحاجة في الكود ، لا يوجد عدد متغيرات ثابت بل تقوم بالإعلان عن المتغير في وقت الحاجة إليه ، ويفضل وضعها في بداية الكود
أبو الحداحيد الدالة EVALUATE ببساطة بديل لاستخدام المعادلات داخل الأكواد وهي قوية جداً ولكن معقدة بعض الشيء لذا لا يستخدمها الكثير من المبرمجين في الـ VBA .. حاول الاستفادة منها قدر المستطاع ، فهي في الموضوع قامت اختصار أسطر كثيرة من الأكواد بسطر واحد فقط

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

تقبلوا وافر تقديري واحترامي




اضافة رد جديد اضافة موضوع جديد
الصفحة 2 من 2 < 1 2 >





الكلمات الدلالية
إعادة ، ترتيب ، الأعمدة ، باستخدام ، المصفوفات ،









اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 02:36 AM