المحتويات
صياغة المشكلة
لدينا نطاق من الخلايا التي تحتوي على بيانات تحتوي على خلايا فارغة:
تتمثل المهمة في إزالة الخلايا الفارغة ، مع ترك الخلايا التي تحتوي على معلومات فقط.
الطريقة 1. خشن وسريع
- اختيار النطاق الأصلي
- اضغط على المفتاح F5، زر' التالي تسليط الضوء (مميز). في النافذة التي تفتح ، حدد خلايا فارغة(فراغات) ثم انقر OK.
تم تحديد جميع الخلايا الفارغة في النطاق.
- نعطي أمرًا في القائمة لحذف الخلايا المحددة: انقر بزر الماوس الأيمن- احذف الخلايا (حذف الخلايا) مع التحول التصاعدي.
الطريقة 2: صيغة الصفيف
للتبسيط ، دعنا نسمي نطاقات العمل باستخدام مدير الاسم (مدير الاسم) علامة التبويب معادلة (الصيغ) أو القائمة في Excel 2003 والإصدارات الأقدم إدراج - اسم - تعيين (أدخل - اسم - تعريف)
اسم النطاق B3: B10 فارغ، النطاق D3: D10 - لا شيء فارغ. يجب أن تكون النطاقات بنفس الحجم تمامًا ، ويمكن تحديد موقعها في أي مكان بالنسبة لبعضها البعض.
حدد الآن الخلية الأولى من النطاق الثاني (D3) وأدخل هذه الصيغة المخيفة فيها:
= IF (ROW () -ROW (NoEmpty) +1> NOTROWS (YesEmpty) -COUNTBLANK (YesEmpty)؛ "" + الصفوف (هناك فارغة))) ؛ LINE () - ROW (لا فارغ) +1) ؛ العمود (هناك فارغة) ؛ 4)))
في النسخة الإنجليزية سيكون:
= IF (ROW () - ROW (NoEmpty) +1> ROWS (Empty) -COUNTBLANK (Empty)، ""، INDIRECT (ADDRESS (SMALL (((IF (Empty <> ""، ROW (Empty)، ROW () + ROWS (HaveEmpty))) ، ROW () - ROW (NoEmpty) +1) ، COLUMN (HaveEmpty) ، 4)))
علاوة على ذلك ، يجب إدخالها كصيغة صفيف ، أي اضغط بعد اللصق أدخل (كالعادة) و كترل + شيفت + إنتر. الآن يمكن نسخ الصيغة لأسفل باستخدام الإكمال التلقائي (اسحب الصليب الأسود في الزاوية اليمنى السفلية من الخلية) - وسنحصل على النطاق الأصلي ، ولكن بدون خلايا فارغة:
الطريقة الثالثة. وظيفة مخصصة في VBA
إذا كان هناك شك في أنه سيتعين عليك في كثير من الأحيان تكرار الإجراء لإزالة الخلايا الفارغة من النطاقات ، فمن الأفضل إضافة وظيفتك الخاصة لإزالة الخلايا الفارغة إلى المجموعة القياسية مرة واحدة ، واستخدامها في جميع الحالات اللاحقة.
للقيام بذلك ، افتح محرر Visual Basic (ALT + F11) ، أدخل وحدة فارغة جديدة (القائمة إدراج - وحدة) وانسخ نص هذه الوظيفة هناك:
الدالة NoBlanks (DataRange as Range) كمتغير () Dim N مثل Dim N2 طويل مثل Dim Rng طويل مثل Range Max Application.Caller.Cells.Count ، DataRange.Cells.Count) نتيجة ReDim (1 إلى MaxCells ، 1 إلى 1) لكل Rng في DataRange.Cells If Rng.Value <> vbNullString ثم N = N + 1 نتيجة (N ، 1 ) = Rng.Value End If Next Rng For N2 = N + 1 To MaxCells Result (N2، 1) = vbNullString Next N2 If Application.Caller.Rows.Count = 1 ثم NoBlanks = Application.Transpose (النتيجة) الآخر NoBlanks = النتيجة وظيفة End If End
لا تنس حفظ الملف والعودة من محرر Visual Basic إلى Excel. لاستخدام هذه الوظيفة في مثالنا:
- حدد نطاقًا كافيًا من الخلايا الفارغة ، على سبيل المثال F3: F10.
- الذهاب إلى القائمة إدراج - وظيفة (إدراج - وظيفة)أو انقر فوق الزر إدراج وظيفة (إدراج الوظيفة) علامة التبويب معادلة (الصيغ) في الإصدارات الأحدث من Excel. في الفئة تعريف المستخدم (تعريف المستخدم) اختر وظيفتنا لا بلانكس.
- حدد نطاق المصدر بالفراغات (B3: B10) كوسيطة للدالة واضغط كترل + شيفت + إنترلإدخال الدالة كصيغة صفيف.
:
- حذف كل الصفوف الفارغة في الجدول مرة واحدة باستخدام ماكرو بسيط
- إزالة جميع الصفوف الفارغة في ورقة العمل مرة واحدة باستخدام الوظيفة الإضافية PLEX
- ملء سريع لجميع الخلايا الفارغة
- ما هي وحدات الماكرو ، حيث يمكنك ادراج التعليمات البرمجية للماكرو في VBA