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

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

قام بنشر

أساتذتي الأفاضل:

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

وجزاكم الله خيراً

  () Sub Delete_Zero
  
   For i = 2 To 183
   If Cells(284, i) = 0 Then
       Cells(284, i).EntireColumn.Delete
       
       End If
       Next i
       
    
End Sub

 

 

Delete zero.rar

قام بنشر

استبدل الرقم 183 في السطر   For i = 2 To 183 بـ 284

اليك الكود التالي الذي يقوم بنفس العمل و اسرع بكثير 

حيث انه يقوم بتجميع كل الاعمدة المطلوبة وحذفها دفعة واحدة

Sub Delete_Zero()
      Dim rg_to_del As Range, i As Integer
       Application.ScreenUpdating = False
      For i = 2 To 284
    If Cells(284, i) = 0 Then
            If rg_to_del Is Nothing Then
             Set rg_to_del = Cells(284, i)
             Else
             Set rg_to_del = Union(Cells(284, i), rg_to_del)
            End If
     End If
        Next i
       rg_to_del.EntireColumn.Delete
       
    Application.ScreenUpdating = True
End Sub

 

  • Like 3
قام بنشر
1 ساعه مضت, سليم حاصبيا said:

استبدل الرقم 183 في السطر   For i = 2 To 183 بـ 284

اليك الكود التالي الذي يقوم بنفس العمل و اسرع بكثير 

حيث انه يقوم بتجميع كل الاعمدة المطلوبة وحذفها دفعة واحدة


Sub Delete_Zero()
      Dim rg_to_del As Range, i As Integer
       Application.ScreenUpdating = False
      For i = 2 To 284
    If Cells(284, i) = 0 Then
            If rg_to_del Is Nothing Then
             Set rg_to_del = Cells(284, i)
             Else
             Set rg_to_del = Union(Cells(284, i), rg_to_del)
            End If
     End If
        Next i
       rg_to_del.EntireColumn.Delete
       
    Application.ScreenUpdating = True
End Sub

 

بارك الله بك أستاذي الفاضل سليم على هذا الجهد الرائع.

وكي أزداد علما ومعرفة هل لك ان تشرح لي الخلل الذي كان في المعادلة التي كنت استخدمها؟

بوركت...

 

قام بنشر

أخي العزيز أحمد

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

For i = 2 To 183

استخدم السطر التالي بدلاً من هذا السطر

For i = 183 To 2 Step -1

 

  • Like 1
قام بنشر

اخى الكريم

جرب ايضا هذا الكود يفى بالغرض

Sub Delete_Zero()
Application.ScreenUpdating = False
    lc = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
    lr = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
   For i = lc To 3 Step -1
   If Application.WorksheetFunction.Sum(Sheet1.Range(Cells(3, i), Cells(lr, i))) = 0 Then
       Columns(i).Delete Shift:=xlToLeft
       End If
       Next i
    Application.ScreenUpdating = True
End Sub

وبهذا الكود انت لا تحتاج الى الصف رقم 284 اللى فيه مجموع الاعمده فانت فى غنى عنه

تقبل تحياتى

  • Like 1
قام بنشر (معدل)
4 ساعات مضت, أحمد عياد - أبو علي said:

بارك الله بك أستاذي الفاضل سليم على هذا الجهد الرائع.

وكي أزداد علما ومعرفة هل لك ان تشرح لي الخلل الذي كان في المعادلة التي كنت استخدمها؟

بوركت...

 

الخلل كما ذكرت لك هو في السطر For حبث ان الرقم بجب ان يكون 284 و ليس 183

تم تعديل بواسطه سليم حاصبيا
  • Like 1
قام بنشر
20 ساعات مضت, سليم حاصبيا said:

الخلل كما ذكرت لك هو في السطر For حبث ان الرقم بجب ان يكون 284 و ليس 183

قمت بتجربة ذلك، ولم تكن النتيجة صحيحة وكاملة، كذلك قمت بزيادة الرقم الى أكثر من ذلك بكثير وبقيت نفس المشكلة.

في ٥‏/٤‏/٢٠١٦ at 14:49, ياسر خليل أبو البراء said:

أخي العزيز أحمد

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


For i = 2 To 183

استخدم السطر التالي بدلاً من هذا السطر


For i = 183 To 2 Step -1

 

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

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information