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

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

قام بنشر

السلام عليكم عندى كود وهو

Sub AAA()

Sheets("123").Range("A1:A500").ClearContents

End Sub
ولكنه لا يمسح الخانات اللى بها فلتر 

فأنا اريد يمسح جميع الخانات حتى المخفيه 

مع الشكر

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

شكرا للاستاذ سليم  حاصبيا  وشكرا ايضا للاستاذ عبدالسلام ابو العوافى 

وبالفعل الكود الخاص بالاستاذ  عبدالسلام ابو العوافى  هو ما كنت ابحث عنه 

ولكن هل يوجد كود اخر يكون اسرع من ذلك حيث ان الجدول الخاص بى يحتوى على حوالى 5000 سطر

مع الشكر وجعله الله فى ميزان حسناتكم

 

تم تعديل بواسطه عصام مسعد
كلمه على
قام بنشر
منذ ساعه, سليم حاصبيا said:

جرب هذا الكود


Sub del_rg()
With Sheets("123")
.AutoFilterMode = False
.Range("a1:a5000") = ""
End With
End Sub

 

جميل بس كنت محتاج كود ميفكش الفلتر لاننى عامل الفلتر فى مكان غير المطلوب مسحه بمعنى اننى عامل فلتر فى B واريد ان امسح A . وشكرا جزيلا للاهتمام

قام بنشر

أعتقد أنه من الأفضل إرفاق ملفك المرفق

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

  • Like 2
قام بنشر

كود اسرع

Sub AAA()
    Dim i As Integer

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    For i = 1 To 5000
        Cells(i, 1) = Null
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

 

  • Like 1
قام بنشر
9 دقائق مضت, عبدالسلام ابوالعوافي said:

كود اسرع


Sub AAA()
    Dim i As Integer

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    For i = 1 To 5000
        Cells(i, 1) = Null
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

 

احييك على ذكائك والف الف شكر وربنا يجعله فى ميزان حسناتك - هو ديه المطلوب 

قام بنشر

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

أعتقد من الأفضل إلغاء الفلترة في النطاق ثم مسح النطاق المطلوب ثم إرجاع النطاق للفلترة بالشرط المسبق ..

تقبل تحياتي

  • Like 2
قام بنشر

استاذنا ياسر 

لا اعلم لما تتخوف وتتحاشى الحلقات التكرارية بالرغم انها اساس العمل في الكثير من الدوال

مثلا لو عملنا دالة Lookup  او Sum  او Index فإن الاكسل سيقوم بفحص كل الخلايا في النطاق .. يعني انه سيستخدم الحلقات التكرارية

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

المثال السابق يحتوي فقط علي 5000 خلية .. يعني لاشي بالنسبة للحاسب الذي يقوم بمئات الملايين من العمليات في الثانية الواحدة

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

ارفقت لك المثال لكي تجرب بنفسك 

اعذرني على الاطالة .. تحياتي

ForLoop.rar

  • Like 2
قام بنشر

أخي الحبيب عبد السلام

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

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

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

 

  • Like 4
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information