تنسيق الاختيار

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

وإذا تم تمييز الصف والعمود الحاليين عند تحرك الخلية النشطة عبر الورقة؟ نوع من اختيار التنسيق مثل هذا:

أفضل من المسطرة ، أليس كذلك؟

هناك عدة طرق متفاوتة التعقيد لتنفيذ ذلك. كل طريقة لها مزاياها وعيوبها. دعونا نلقي نظرة عليها بالتفصيل.

الطريقة 1. واضح. ماكرو يميز الصف والعمود الحاليين

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

افتح ورقة بها جدول تريد أن تحصل فيه على مثل هذا التحديد الإحداثي. انقر بزر الماوس الأيمن فوق علامة تبويب الورقة وحدد الأمر من قائمة السياق النص المصدر (مصدر الرمز).يجب أن تفتح نافذة محرر Visual Basic. انسخ هذا النص من وحدات الماكرو الثلاثة إليه:

Dim Coord_Selection كـ Boolean 'متغير عام للتحديد تشغيل / إيقاف Sub Selection_On ()' ماكرو عند التحديد Range) Dim WorkRange As Range إذا كان Target.Cells.Count> 1 ثم Exit Sub 'إذا تم تحديد أكثر من خلية واحدة ، قم بإنهاء If Coord_Selection = False ثم Exit Sub' إذا كان التحديد معطلًا ، اخرج من Application.ScreenUpdating = False Set WorkRange = Range ("A1: N6") "عنوان نطاق العمل الذي يكون التحديد مرئيًا فيه  

قم بتغيير عنوان نطاق العمل إلى عنوانك الخاص - سيعمل اختيارنا ضمن هذا النطاق. ثم أغلق محرر Visual Basic وارجع إلى Excel.

اضغط على اختصار لوحة المفاتيح ALT + F8لفتح نافذة بها قائمة بوحدات الماكرو المتوفرة. دقيق Selection_On، كما قد يتبادر إلى ذهنك ، يتضمن تحديد الإحداثيات في الورقة الحالية والماكرو Selection_Off - يطفئها. في نفس النافذة ، بالضغط على الزر المعلمات (خيارات) يمكنك تعيين اختصارات لوحة المفاتيح لوحدات الماكرو هذه لسهولة التشغيل.

مزايا هذه الطريقة:

  • سهولة نسبية في التنفيذ
  • التحديد - العملية غير ضارة ولا تغير محتوى أو تنسيق خلايا الورقة بأي شكل من الأشكال ، كل شيء يبقى كما هو

سلبيات هذه الطريقة:

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

الطريقة الثانية. الأصل. CELL + وظيفة التنسيق الشرطي

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

تعتمد الطريقة على استخدام وظيفة CELL ، والتي يمكن أن تعطي الكثير من المعلومات المختلفة عن خلية معينة - الارتفاع ، والعرض ، ورقم عمود الصف ، وتنسيق الأرقام ، وما إلى ذلك. تحتوي هذه الوظيفة على وسيطين:

  • كلمة رمزية للمعلمة ، مثل "عمود" أو "صف"
  • عنوان الخلية التي نريد تحديد قيمة هذه المعلمة لها

الحيلة هي أن الحجة الثانية اختيارية. إذا لم يتم تحديده ، فسيتم أخذ الخلية النشطة الحالية.

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

  1. نختار جدولنا ، أي تلك الخلايا التي يجب عرض تحديد الإحداثيات فيها في المستقبل.
  2. في Excel 2003 والإصدارات الأقدم ، افتح القائمة تنسيق - تنسيق شرطي - صيغة (تنسيق - تنسيق شرطي - صيغة). في Excel 2007 والإصدارات الأحدث - انقر فوق علامة التبويب الصفحة الرئيسية (الرئيسية)زر التنسيق الشرطي - إنشاء قاعدة (تنسيق شرطي - إنشاء قاعدة) واختر نوع القاعدة استخدم صيغة لتحديد الخلايا المطلوب تنسيقها (استخدم الصيغة)
  3. أدخل الصيغة الخاصة بتحديد الإحداثيات:

    = OR (CELL ("row") = ROW (A2)، CELL ("عمود") = COLUMN (A2))

    = OR (CELL («row») = ROW (A1)، CELL («عمود») = عمود (A1))

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

  4. صحافة الإطار (شكل) وتعيين لون التعبئة.

كل شيء جاهز تقريبًا ، ولكن هناك فارق بسيط واحد. الحقيقة هي أن Excel لا يعتبر التغيير في التحديد بمثابة تغيير في البيانات الموجودة على الورقة. ونتيجة لذلك ، فإنه لا يؤدي إلى إعادة حساب الصيغ وإعادة تلوين التنسيق الشرطي فقط عندما يتغير موضع الخلية النشطة. لذلك ، دعنا نضيف ماكرو بسيطًا إلى وحدة الورقة التي ستقوم بذلك. انقر بزر الماوس الأيمن فوق علامة تبويب الورقة وحدد الأمر من قائمة السياق النص المصدر (مصدر الرمز).يجب أن تفتح نافذة محرر Visual Basic. انسخ هذا النص من هذا الماكرو البسيط فيه:

تغيير ورقة العمل الفرعية الخاصة (الهدف حسب القيمة كنطاق) ActiveCell.Calculate End Sub  

الآن ، عندما يتغير التحديد ، سيتم بدء عملية إعادة حساب الصيغة باستخدام الوظيفة CELL في التنسيق الشرطي وإغراق الصف والعمود الحاليين.

مزايا هذه الطريقة:

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

سلبيات هذه الطريقة:

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

الطريقة 3. الأمثل. تنسيق شرطي + وحدات ماكرو

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

افتح ورقة بها جدول تريد أن تحصل فيه على مثل هذا التحديد الإحداثي. انقر بزر الماوس الأيمن فوق علامة تبويب الورقة وحدد الأمر من قائمة السياق النص المصدر (مصدر الرمز).يجب أن تفتح نافذة محرر Visual Basic. انسخ هذا النص من وحدات الماكرو الثلاثة إليه:

Dim Coord_Selection مثل Boolean Sub Selection_On () Coord_Selection = True End Sub Selection_Off () Coord_Selection = False End Sub Sub Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim WorkRange كنطاق ، CrossRange كمجموعة نطاق WorkRange = Range ("A7: N300") 'адрес рабочего диапазона с таблицей If Target.Count> 1 ثم قم بالخروج الفرعي إذا كان Coord_Selection = False ثم WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = Fange If Not Intersect = Nothing WorkRange ، Union (Target. حذف End If End Sub  

لا تنس تغيير عنوان نطاق العمل إلى عنوان الجدول الخاص بك. أغلق محرر Visual Basic وارجع إلى Excel. لاستخدام وحدات الماكرو المضافة ، اضغط على اختصار لوحة المفاتيح ALT + F8  والمضي قدما بنفس طريقة الطريقة 1. 

الطريقة 4. جميلة. FollowCellPointer الوظيفة الإضافية

Excel MVP يقدم Jan Karel Pieterse من هولندا وظيفة إضافية مجانية على موقعه على الويب اتبعCellPointer(36 كيلوبايت) ، والتي تحل نفس المشكلة عن طريق رسم خطوط سهم بيانية باستخدام وحدات الماكرو لتمييز الصف والعمود الحاليين:

 

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

  • في Excel 2003 والإصدارات الأقدم - من خلال القائمة الخدمة - الإضافات - نظرة عامة (أدوات - وظائف إضافية - تصفح)
  • في Excel 2007 وما بعده ، من خلال ملف - خيارات - إضافات - انتقال - تصفح (ملف - خيارات Excel - الوظائف الإضافية - انتقل إلى - تصفح)

  • ما هي وحدات الماكرو ، حيث يتم ادراج التعليمات البرمجية للماكرو في Visual Basic

 

اترك تعليق