اعلن هنا
أكاديمية الصقر للتدريب
أعلن هنا
أعلن هنا
أعلن هنا
أعلن هنا



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





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

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



01-01-2018 03:13 مساء
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 3090
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 10
يتابعهم : 0
يتابعونه : 256
قوة السمعة : 8678
الاعجاب : 2897
 offline 
السلام عليكم ورحمة الله وبركاته

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

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

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

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

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

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


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

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


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

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

طيب الدالة Evaluate دي بتعمل ايه ؟ دي بالظبط كأنك بتكتب معادلة بس في الكود ، والمعادلة هنا بسيطة جداً .. يعني شكل المعادلة في ورقة العمل لو أخدنا الجزء ده وحبينا نعمله كمعادلة في ورقة العمل هيكون بالشكل ده
بنشيل كلمة Evaluate والقوس المفتوح وعلامة التنصيص ........... وعلامة التنصيص والقوس المقفول ، ونحط مكانهم علامة يساوي =    g





ونشيل الجزء ده r.Rows.Count (ودا اللي بنعرف من خلاله عدد صفوف النطاق) ، وبنشيل معاه علامة التنصيص وعلامة & اللي قبلها ، وكمان بنشيل علامة & والتنصيص اللي بعدها ، ونضع مكانه الرقم 10 .. فتكون المعادلة بالشكل ده
=ROW(1:10)

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

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

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


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


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

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

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

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


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

أرجو أن أكون وفقت في شرح الكود ، وأن تكونوا قد استوعبتم الدرس جيداً
وأخيراً إليكم الكود بالشكل الكامل له
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


لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب

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


أثارت هذه المشاركة إعجاب: malik، Yasser Elaraby، محمد أبو عبدو، محمود ابو الدهب، ناصر سعيد1، mtotti5، ashrafsharaf، hamda، ابراهيم80، EM_ACC، احمد الحاوي، ابو مصطفى، ياسر فتحى البنا، سمير شرف،





01-01-2018 06:12 مساء
مشاهدة مشاركة منفردة [1]
محمد أبو عبدو
menu_open
عضو نشيط
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 247
المشاركات : 89
الجنس : ذكر
تاريخ الميلاد : 13-4-1966
يتابعهم : 6
يتابعونه : 2
قوة السمعة : 273
الاعجاب : 130
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
السلام عليكم ورحمة الله تعالى وبركاته

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

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




01-01-2018 07:52 مساء
مشاهدة مشاركة منفردة [2]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 3090
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 10
يتابعهم : 0
يتابعونه : 256
قوة السمعة : 8678
الاعجاب : 2897
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
وعليكم السلام أخي العزيز محمد أبو عبدو
وجزاك الله خيراً على مرورك العطر وكلماتك الطيبة





01-01-2018 08:07 مساء
مشاهدة مشاركة منفردة [3]
زيزو العجوز
menu_open
عضو محترف
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 163
المشاركات : 93
الجنس : ذكر
يتابعهم : 0
يتابعونه : 9
قوة السمعة : 712
الاعجاب : 168
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
السلام عليكم اخى الكريم ياسر
جعله الله فى ميزان حسناتك
  سلمت يداك

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




01-01-2018 09:06 مساء
مشاهدة مشاركة منفردة [4]
khaled alborene
menu_open
عضو ماسي
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 376
الجنس : ذكر
تاريخ الميلاد : 9-9-1990
يتابعهم : 7
يتابعونه : 6
قوة السمعة : 370
الاعجاب : 143
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
استاذ ياسر انا كيف بدي احدد عدد المتغيرات الي محتاجها
 





01-01-2018 11:11 مساء
مشاهدة مشاركة منفردة [5]
محمود ابو الدهب
menu_open
عضو محترف
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 14
المشاركات : 571
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 4-7-1990
الدعوات : 56
يتابعهم : 6
يتابعونه : 105
قوة السمعة : 1792
الاعجاب : 650
 Online 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
والله موضوع رائع وبسيط وسمبل بس لو افهم الدالة  Evaluate  يكون الاكل استوى في راسي لسه مش راضيه تركب معايا يمكن لان ذهنى مشغول ولانى اريد معرفة الغرض منها جيدا وليس مجرد انها لابد من وجودها بالكود ويمكن الاستغناء عنها بالشيت "ولان الغرض التعلم احاول واطلب شرح ادق لها بعد اذنك " على المعموم اجرب افهماها بوقت اخر واضع الكود بالمرجعيات عندى بعدها  فأنت من تعلمنا ان نصتاد قبل ان نأكل فتحياتى وتقديرى معلمي العظيم 

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

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


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

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


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

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




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


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




02-01-2018 07:59 صباحا
مشاهدة مشاركة منفردة [8]
الصقر
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1114
الجنس : ذكر
الدعوات : 7
يتابعهم : 0
يتابعونه : 286
قوة السمعة : 7896
الاعجاب : 1934
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات

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


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




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

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




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

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




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

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


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


07-01-2018 08:10 مساء
مشاهدة مشاركة منفردة [12]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 3090
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 10
يتابعهم : 0
يتابعونه : 256
قوة السمعة : 8678
الاعجاب : 2897
 offline 
look/images/icons/i1.gif إعادة ترتيب الأعمدة باستخدام المصفوفات
بارك الله فيكم إخواني الكرام وجزاكم الله خيراً على كلماتكم الطيبة ودعائكم الطيب ومروركم العطر .. فلقد أثلجتم صدري بردودكم الطيبة

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

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

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







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


 







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

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




الساعة الآن 10:40 صباحا

أعلن هنا
أعلن هنا
أعلن هنا