اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

ترتيب الأسماء أو القيم طبقاً لطول السلسلة النصية (موضوع الأسبوع الرابع)


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

السلام عليكم ورحمة الله وبركاته

إخواني وأحبابي في الله ..

روابط الموضوعات للأسابيع الماضية :

*************************

نتابع معكم للأسبوع الرابع موضوع البحث ، موضوعنا اليوم بإذن الله كيفية ترتيب الأسماء أو القيم في نطاق بحيث تكون القيمة الأطول (من ناحية عدد الأحرف أي السلسلة النصية) القيمة الأطول في البداية يليها الأقل منها وهكذا ..

مثال للتطبيق عليه :

ضع القيم التالية في النطاق A1:A10

Hi
Yasser
Mohammed
Khaledy
Salah
Baraa Khalil
KAL
Huda
Nader Said
Monalizaa

المطلوب أن تكون النتيجة بهذا الشكل:

Baraa Khalil
Nader Said
Monalizaa
Mohammed
Khaledy
Yasser
Salah
Huda
KAL
Hi

لو قمنا بالاستعانة بعمود مساعد ووضعنا الدالة Len لعرفنا طول السلسلة النصية لكل اسم ..

الحلول يمكن أن تكون بعمود مساعد أو بدون عمود مساعد ، لا أريد تقييد البحث بشيء محدد ..أطلقوا العنان للأفكار والإبداع

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

  • Like 5
رابط هذا التعليق
شارك

ماشى يا ابو البراء عمال تصعب الامور كل مره عليا بس يالا ولا يهمك

غدا سوف اقوم بالبحث حتى اكون استفقت

جزاك الله كل خير اخى وحبيبى الغالى

  • Like 1
رابط هذا التعليق
شارك

أخي الحبيب أحمد الفلاحجي

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

بارك الله فيك وجزيت خيراً على متابعتك الجيدة للموضوعات

تقبل تحياتي

  • Like 1
رابط هذا التعليق
شارك

صباح الخير اخي ابو البراء

توصلت الى احد الحلول (دون الفراغات)

عسى ان ينال الاعجاب (ممكن الاستعانة بالدالة التالية في العامود C -بدل الموجودة)

=IF(A2<>"",LEN(TRIM(A2))+ROW(A1)/1000,"")

 

Sort_by_text_len.rar

تم تعديل بواسطه سليم حاصبيا
  • Like 4
رابط هذا التعليق
شارك

أخي الغالي سليم

معادلات ولا أروع .. حل جميل ومبدع بارك الله فيك

ومشكور على شرارة الإنطلاق الأولى في موضوع البحث .. وفي انتظار المزيد من الحلول منك فأنا متيقن من أن جرابك ما زال به الكثير

 

  • Like 1
رابط هذا التعليق
شارك

23 دقائق مضت, ياسر خليل أبو البراء said:

أخي الغالي سليم

معادلات ولا أروع .. حل جميل ومبدع بارك الله فيك

ومشكور على شرارة الإنطلاق الأولى في موضوع البحث .. وفي انتظار المزيد من الحلول منك فأنا متيقن من أن جرابك ما زال به الكثير

 

اخي الحبيب ياسر

كل الشكر والتقدير غلى هذا الاطراء مما جعلني اعدّل على المعادلة في العامود D2 (لتتجاوز الفراغات الزائدة في النص )الى هذه المعادلة (طبغاً لازم هنا Crt+Shift + Enter)

والسحب نزولاً

=TRIM(IF(ROWS($B$1:B1)>COUNTA($A$2:$A$100),"",INDEX($A$2:$A$100,MATCH(B2,$C$2:$C$100,0))))

 

  • Like 1
رابط هذا التعليق
شارك

لحظة من فضلك أخي الحبيب سليم

هل تعتقد أنني سأرى المشاركة دون تجربتها .. كل ما فعلته هو أنك أضفت الدالة Trim في بداية المعادلة فقط .. لما إذاً جعتلها معادلة صفيف ..؟؟!!

المعادلة الأخيرة في المشاركة السابقة تعمل دون الضغط على Ctrl + Shift + Enter أي أنها ليس بمعادلة صفيف ..تأكد بنفسك وأعلمنا إذا كان كلامي غير صحيح

  • Like 2
رابط هذا التعليق
شارك

23 دقائق مضت, ياسر خليل أبو البراء said:

لحظة من فضلك أخي الحبيب سليم

هل تعتقد أنني سأرى المشاركة دون تجربتها .. كل ما فعلته هو أنك أضفت الدالة Trim في بداية المعادلة فقط .. لما إذاً جعتلها معادلة صفيف ..؟؟!!

المعادلة الأخيرة في المشاركة السابقة تعمل دون الضغط على Ctrl + Shift + Enter أي أنها ليس بمعادلة صفيف ..تأكد بنفسك وأعلمنا إذا كان كلامي غير صحيح

 

23 دقائق مضت, ياسر خليل أبو البراء said:

لحظة من فضلك أخي الحبيب سليم

هل تعتقد أنني سأرى المشاركة دون تجربتها .. كل ما فعلته هو أنك أضفت الدالة Trim في بداية المعادلة فقط .. لما إذاً جعتلها معادلة صفيف ..؟؟!!

المعادلة الأخيرة في المشاركة السابقة تعمل دون الضغط على Ctrl + Shift + Enter أي أنها ليس بمعادلة صفيف ..تأكد بنفسك وأعلمنا إذا كان كلامي غير صحيح

كل الحق معك اخي الحبيب ياسر (غلطة مطبعية ليس الّا)

زيادة في اثراء الموضوع هذا الملف

 

Sort_by_text_len advanced.rar

  • Like 3
رابط هذا التعليق
شارك

بارك الله فيك أخي الحبيب سليم على الحلول الرائعة والمميزة ..

ننتظر حلول أخرى منك بالأكواد .. بس متنساش تعلن عن المتغيرات وإلا هاخدك مخالفة :wink2:

 

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

جزاكم الله خيراً على تفعيل العمل والطلب من الأعضاء الكرام التفاعل الإيجابي بالموارد المتاحة

قمت بدوري بالفرز التنازلي حسب عدد الأحرف باستخدام عمود مساعد يتعلق بعمل الدالة LEN

كمساهمة بسيطة والسلام عليكم.

التقاط5.PNG

فرز حسب الأحرف تنازلياً.rar

  • Like 2
رابط هذا التعليق
شارك

وعليكم السلام أخي الغالي أبو يوسف

بارك الله فيك على افكارك الجميلة ويمكن أن تكون نواة لكود حيث يتم وضع طول السلسلة في عمود ثم الفرز ثم إزالة قيم العمود المساعد ..

جزاكم الله خير الجزاء

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

 

  • Like 2
رابط هذا التعليق
شارك

الان, ياسر خليل أبو البراء said:

وعليكم السلام أخي الغالي أبو يوسف

بارك الله فيك على افكارك الجميلة ويمكن أن تكون نواة لكود حيث يتم وضع طول السلسلة في عمود ثم الفرز ثم إزالة قيم العمود المساعد ..

جزاكم الله خير الجزاء

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

 

السلام عليكم طبقت ما ذكرت لي بموديول عن طريق تسجيل ماكرو

أرجو أن ينال إعجابكم

فرز حسب الأحرف تنازلياً.rar

رابط هذا التعليق
شارك

وعليكم السلام

بارك الله فيك أخي الحبيب أبو يوسف

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

أريد تحسين لشكل الكود المسجل

من هنا

 

  • Like 1
رابط هذا التعليق
شارك

الان, ياسر خليل أبو البراء said:

وعليكم السلام

بارك الله فيك أخي الحبيب أبو يوسف

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

أريد تحسين لشكل الكود المسجل

من هنا

 

السلام عليكم إن شاء الله تعالى بعد صلاة الجمعة

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

أخي الحبيب أبو البراء...أرجو أن يكون حلاً مناسباً بعد جهد جهيد...العلم في الصغر كالنقش في الحجر ..أما في الكبر فهو كوخز الأبر..

Sub SortByLEN()
    Range("B1").Select
    Range("B1").FormulaR1C1 = "=LEN(RC[-1])"
    Selection.AutoFill Destination:=Range("B1:B10")
    Range("A1:B10").Sort Key1:=Range("B1:B10"), Order1:=xlDescending, Header:=xlNo
    Range("B1:B10").ClearContents
End Sub

 

فرز حسب الأحرف تنازلياً.rar

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

جميل أخي الحبيب أبو يوسف

وعليكم السلام

والله كدا بقا شكله أحسن ولا ايه رأيك

ندخل على الخطوة التالية وأنا مش مستعجل خلينا نحول الكود لكود صحيح 100% إن شاء الله

ايه رأيك في السطرين دول

Range("B1:B10").Select
    Selection.ClearContents

عايزني نلغي كلمة Select لأنها ملهاش لازمة في معظم الأكواد .. وطبعاً كلمة Selection مرتبطة بيها .. فايه رأيك تشيل الاتنين دول وتخلي السطرين سطر واحد

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

تقبل تحياتي

  • Like 1
رابط هذا التعليق
شارك

الان, ياسر خليل أبو البراء said:

 


Range("B1:B10").Select
    Selection.ClearContents

عايزني نلغي كلمة Select لأنها ملهاش لازمة في معظم الأكواد .. وطبعاً كلمة Selection مرتبطة بيها .. فايه رأيك تشيل الاتنين دول وتخلي السطرين سطر واحد

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

تقبل تحياتي

السلام عليكم ...تم التعديل ..جزاكم الله خيراً

  • Like 1
رابط هذا التعليق
شارك

مستعجل ليه ..لسه مخلصناش !!

نرجع بقا للجزء الأول مرة تانية ..ايه رأيك بردو نخلص من Select ونحاول كدا نعمل الجزء دا الخاص بوضع المعادلة في سطر واحد بدل 3 سطور

ببساطة تتم الإشارة للمدى ثم نقطة ثم المطلوب العمل عليه وهو وضع معادلة وبعدين علامة يساوي يليها المعادلة بين اقواس تنصيص .. وبكدا يتم وضع المعادلات في النطاق بالكامل بسطر واحد بدل 3 سطور

في انتظار التجربة والتعديل .. ويا ريت تضع التعديل الجديد في مشاركة جديدة ..علشان اللي عايز يتعلم يعرف ايه الخطوات اللي ممكن يعملها عشان يختصر الأكواد ..

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

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم أخي الحبيب أبو البراء

تأخرت عليك لا تؤاخذني..

Sub SortByLEN()
    Range("B1:B10").FormulaR1C1 = "=LEN(RC[-1])"
    Range("A1:B10").Sort Key1:=Range("B1:B10"), Order1:=xlDescending, Header:=xlNo
    Range("B1:B10").ClearContents
End Sub

بارك الله بكم وبعلمكم ونفع به وجعله ذخراً لكم يوم القيامة ..آمين.

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

تمام تمام أخي الغالي أبو يوسف

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

شايف المدى B1:B10 بص في الـ 3 سطور دول .. ولاحظ إن المدى متكرر

فيه خاصية With و القفلة بتاعتها End With دي بنستخدمها امتى ؟ لما يكون هنعمل كذا سطر وفيه شيء مشترك بينهم (المشترك بينهم المدى)

يعني ببساطة بعد جملة With نضع المدى أو النطاق المشترك في الأسطر المراد تلخيصها .. ثم الأسطر .. ثم نهاية الجملة End With

بس لاحظ إنك هتشيل النطاق من الأسطر وتضع مكانه نقطة وبس .. جرب تعملها وإن شاء الله تنجح فيها وتصل لآخر محطة ..وأعتذر إن كنت قد أتعبتك بالإرشادات

كوسيلة مساعدة (استعن بالله ثم بالرابط التالي )

من هنا

  • Like 1
رابط هذا التعليق
شارك

المشكلة في هذا السطر

   Range("A1:B10").Sort Key1:=Range("B1:B10"), Order1:=xlDescending, Header:=xlNo
Sub SortByLEN()
   With Range("A1:B10")
     .FormulaR1C1 = "=LEN(RC[-1])"
    .Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo
     .ClearContents
   End With
End Sub

يرجى المساعدة بتصحيحه..جزاكم الله خيراً.

رابط هذا التعليق
شارك

أخي الحبيب أبو يوسف

أبقي على هذا الجزء

Key1:=Range("B1:B10")

أو يمكنك التعديل فيه ليكون بهذا الشكل

Key1:=Range("B1")

 

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information