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

سؤال عن طريقة حذف الصفوف الفارغة بـ vba في الاكسل


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

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

اما بعد

اخواني اريد طريقة حذف الصفوف الفارغة بـ vba ..

واريدها يحذف الصفوف عندما تصبه خلية معينة فارغة

مثلا عندما تصبح الخلية c5 فارغة يحذف لي الصف 5 بأكمله

حتى ولو A و B ليسو فارغين

ان شاء الله تكونو فهمتموني وشكرا

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

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

أخي الفاضل صلاح

يرجى إرفاق ملف ليعمل عليه الأخوة الكرام لتوفير الوقت والجهد

تقبل تحياتي

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

جرب الكود التالي

Sub Delete_Rows_Using_Filter_Method()
    Dim Rng As Range
    
    Application.ScreenUpdating = False
        On Error Resume Next
        With ActiveSheet
            .AutoFilterMode = False
            .Range("A1:C" & .Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=3, Criteria1:=""
            Set Rng = .Range("A2:C" & .Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
            .AutoFilterMode = False
            Rng.EntireRow.Delete
        End With
    Application.ScreenUpdating = True
End Sub

تقبل تحياتي

 

أخي الكريم عبد السلام

بارك الله فيك وجزاك الله كل خير

بصراحة أحاول دائماً الابتعاد عن الحلقات التكرارية ، وقد ذكرت من قبل سبب تخوفي من ذلك

بفرض أن الملف يتعامل مع مثلاً 10 آلاف صف .. مع هذا الكم الهائل سيكون الكود بطيء جداً

جربت الكود الخاص بي وحسبت المدة الزمنية في ملف يحتوي 10 آلاف صف فاستغرق 1.3 ثانية في حين أن استخدام الحلقات التكرارية استغرق حوالي 12 ثانية

تقبل تحياتي

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

استاذنا الفاضل ياسر .. استمتع جدا بالنقاش وتبادل الافكار والاراء حول تنوع الحلول 

لم اجرب الكودين واقارن بين سرعتهما .. لان من الواضح كود حضرتك اسرع .. ويكون الفارق ملحوظ عن زيادة حجم البيانات 

قمت بوضع هذا الحل لعله سريع ويفي بالغرض .. ولم استعمل اكواد التسريع

في حالة البيانات الكبيرة غالبا ما استعمل جملة SQL لانها اسرع في التصفية

عند تنوع الاجابات يكون بامكان السائل اختيار مايناسبه حسب البيانات التي يتعامل معها 

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

* ملاحظة .. كودي بالاعلي فيه خطا .. لكن كود استاذنا ياسر افضل وليس هناك داعي للتعديل

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

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

ما هو الخطأ في الكود الذي قدمته؟؟!!

 

هلا علمتنا كيفية بناء جمل الـ SQL لأنه ليس لدينا خبرة بها

بارك الله فيك وجزاك الله خير الجزاء

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

بالنسبة للخطأ .. لو افترضنا ان الخلايا في  الصفين 4 و 5  فارغة .. فالكود سوف يحذف الصف الرابع ويصبح الخامس هو الرابع .. اي ان الكود لن يفحصه مجددا بل ينتقل للصف السادس مباشرة 

وبالنسبة لجملة SQL ان شاء الله ساقوم بشرحها قريبا

استاذ سليم .. الكود ممتاز جدا

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

  • 5 years later...
في ٢٩‏/٥‏/٢٠١٦ at 05:07, سليم حاصبيا said:

 بعد اذن الاخوة الافاضل \هذا الكود من سطر واجد

Sub salim()
Range("c1:c" & Cells(Rows.Count, 3).End(3).Row).SpecialCells(4).EntireRow.Delete
End Sub

 

بعد من فضلك ممكن شرح للكود

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

الكود ينفذ المطلوب

حذف الصف كاملا EntireRow.Delete

لخلايا العمود c من الصف الأول إلى آخر صف مكتوب فيه  Cells(Rows.Count, 3).End(3).Row

بشرط أن تكون الخلايا فارغة SpecialCells(4)

بالتوفيق 

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

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

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

Important Information