أبو ألين قام بنشر يونيو 2, 2022 قام بنشر يونيو 2, 2022 السلام عليكم ورحمة الله وبركاته، اسعد الله اوقاتكم بكل خير يا اساتذة ،، لدي ملف اكسل به عدة صفوف تصل الى 2000 تقريباً مثل الصورة التالية : وهي اعمدة حسب الترتيب من اليسار إلى اليمين (سنة التخرج / المؤهل / المعدل / المعدل من / الجامعة / التخصص ) المطلوب اريد فقط معلومات البكالوريوس وحذف بقية المعلومات ومعلومات البكالوريوس تكون في الصف الأخير من كل عمود بالصورة .. هل من طريقة يا احبة ؟؟ شكرا جزيلا لكم. (72_CVs)Example.xlsx
أ / محمد صالح قام بنشر يونيو 3, 2022 قام بنشر يونيو 3, 2022 عليكم السلام ورحمة الله وبركاته كل خلية يوجد بها أكثر من بيان بينهما سطر جديد داخل نفس الخلية وبعض الخلايا تحتوي على سطرين و بعضها يحتوي على 3 سطور وبعضها يحتوي على 4 سطور وبعضها يحتوي على 5 سطور ويوجد تقريبا 6 سطور أيضا و بعضها يحتوي على سطر واحد فقط هل المطلوب جلب بيانات آخر سطر داخل الخلية يعني السطر الثاني في حالة وجود 2 والثالث في حالة وجود 3 وهكذا ؟؟؟ مع العلم ليست كل الخلايا في نفس الصف منضبطة في عدد السطور فمثلا الصف 17 أول 4 أعمدة يوجد في الخلية 4 سطور وفي العمودين 5 و 6 في نفس الصف نجد الخلية بها 5 سطور وهذا الاضطراب لا يسمح بضبط الأمر فأول خطوة للحصول على المطلوب هو ضبط عدد السطور في كل صف بالتوفيق 1
أبو ألين قام بنشر يونيو 5, 2022 الكاتب قام بنشر يونيو 5, 2022 المطلوب استاذي ان اجلب بيانات مؤهل البكالوريوس فقط .. يعني البكالوريوس في عمود الـ Degree تكون في الصف الثاني من الخلية فتكون جميع بيانات مؤهل البكالوريوس في الصف الثاني من المعدل والجامعة والتخصص وسنة التخرج .. حتى لو كانت في الصف الثالث او الرابع او الخامس فستكون في بقية الاعمدة في نفس المستوى .. فالمطلوب طريقة لجلب هذه البيانات اذا امكن استاذي . ان شاء الله تكون فهمت علي ..الله يحفظك.
lionheart قام بنشر يونيو 5, 2022 قام بنشر يونيو 5, 2022 في 3/6/2022 at 05:10, أ / محمد صالح said: مع العلم ليست كل الخلايا في نفس الصف منضبطة في عدد السطور You are right The data is not valid for manipulation in that structure How did you get such scrambled data
أبو ألين قام بنشر يونيو 6, 2022 الكاتب قام بنشر يونيو 6, 2022 هل يمكن معالجة البيانات عن طريق كود VBA !! من لديه الخبرة في ذلك نحتاج لمساعدته مشكورا .. يتم تحديد الخلية من قبل المستخدم لعمود الـ Degree مثلا ، وهكذا في كل مرة يتم تحديد عمود آخر ويقوم الاكسل بمعالجة البيانات بتحديد سطر مؤهل البكالوريوس داخل الخلية ان كان الثاني او الثالث فيقوم بمعالجة بقية الاعمدة على نفس الصف.
أفضل إجابة أ / محمد صالح قام بنشر يونيو 6, 2022 أفضل إجابة قام بنشر يونيو 6, 2022 ما دمت مصرا على تجاهل الخطأ في تنظيم البيانات واختلاف عدد السطور في كل عمود عن غيره في نفس الصف هذا الكود يبحث عن كلمة بكالوريوس ويجلب البيانات الموجودة في نفس السطر من جميع الأعمدة ويضعها في الأعمدة بداية من H:M مع تجاهل أي خطأ يقابله لذلك أنا شخصيا لست متأكدا بنسبة 100% من صحة النتائج لأن البيانات غير صحيحة من البداية Sub MasSplitText() Dim MyArray() As String, newcol As Long, i As Variant, lr As Long On Error Resume Next lr = Cells(Rows.Count, 1).End(3).Row Range("h2:m" & lr).ClearContents For c = 1 To 6 For rw = 2 To lr MyArray = Split(Cells(rw, 2), Chr(10)) newcol = c + 7 For i = 0 To UBound(MyArray) If MyArray(i) = "بكالوريوس" Then Cells(rw, newcol) = Split(Cells(rw, c), Chr(10))(i) Next i Next rw Next c MsgBox "Done by mr-mas.com" End Sub بالتوفيق 2
أبو ألين قام بنشر يونيو 7, 2022 الكاتب قام بنشر يونيو 7, 2022 لله درك يا أ / محمد صالح .. الف الف شكررر استاااذي .. جزاك الله الجنة يارب العباد .. والله انك فرجت عن اخوك مشكلة عويصه .. اسأل الله الكريم ان يفرج همك وغمك ويذهب عنك كل حزن وفاقة وهم وغم وضيق وكرب ويكرمك في الدنيا والآخرة. اريد فقط تعديل بسيط اذا تكرمت استاذي واذا سمح وقتك الثمين : 1- السماح للمستخدم بتحديد الاعمدة الـ (Range) والتي يقوم الاكسل بتقسيمها واخذ معلومات البكالوريوس منها 2- كذلك يحدد المستخدم المكان الذي يقوم بلصق البيانات فيه الـ (Range) . لأني اريد استخدم الماكرو في برنامج الاكسيل لأقوم بعمله على اكثر من ملف اكسل .. فتختلف مكان الاعمدة في كل ملف . وآسف لطلباتي الكثيرة . @أ / محمد صالح اعتذر لم ارى ما كتبت في توقيعك الا بعد كتابة ردي بالأعلى شكراً جزيلا لك استاذ . اذا يوجد من يساعدني اكون ممنون .
أ / محمد صالح قام بنشر يونيو 7, 2022 قام بنشر يونيو 7, 2022 إذا تأملت ودرست الكود فستصل بإذن الله إلى الحلقة التكرارية التي تحدد الأعمدة هي For c = 1 To 6 والذي يحدد مكان وضع القيمة أو العمود الجديد (هو نفس عدد العمود الحالي مضافا إليه 7 ) newcol = c + 7 نساعد بعضنا هنا بغرض التعلم ومن يتعلم اليوم يساعد غيره غدا أما إن كان الهدف هو الحصول على المطلوب جاهزا فهذا يجب أن يكون بمقابل (ولا تبخسوا الناس أشياءهم) بالتوفيق
الردود الموصى بها