نسخ مجموع الخلايا المحددة إلى الحافظة

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

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

نسخ مجموع الخلايا المحددة إلى الحافظة

إذا رغبت في ذلك ، كان من الممكن النقر بزر الماوس الأيمن فوق هذه النتائج وتحديد الوظائف التي نريد أن نراها من قائمة السياق بالضبط:

نسخ مجموع الخلايا المحددة إلى الحافظة

ومؤخرًا ، في آخر تحديثات Excel ، أضاف مطورو Microsoft ميزة بسيطة ولكنها بارعة - الآن عند النقر فوق هذه النتائج ، يتم نسخها إلى الحافظة!

نسخ مجموع الخلايا المحددة إلى الحافظة

الجمال. 

ولكن ماذا عن أولئك الذين ليس لديهم بعد (أو بالفعل؟) مثل هذا الإصدار من Excel؟ هذا هو المكان الذي يمكن أن تساعد فيه وحدات الماكرو البسيطة.

نسخ مجموع الخلايا المحددة إلى الحافظة باستخدام ماكرو

فتح في علامة التبويب المطور (مطور) رئيس التحرير Visual Basic أو استخدم اختصار لوحة المفاتيح هذا قديم+F11. أدخل وحدة فارغة جديدة عبر القائمة إدراج - وحدة وانسخ الكود التالي هناك:

Sub SumSelected () If TypeName (Selection) <> "Range" ثم اخرج من Sub باستخدام GetObject ("جديد: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum (التحديد) .PutInClipboard End With End Sub  

منطقها بسيط:

  • تأتي أولاً "الحماية من الأحمق" - نتحقق مما تم تمييزه بالضبط. إذا لم يتم تحديد الخلايا (ولكن ، على سبيل المثال ، مخطط) ، فقم بإنهاء الماكرو.
  • ثم باستخدام الأمر Getobject نقوم بإنشاء كائن بيانات جديد حيث سيتم تخزين مجموع الخلايا المحددة لدينا لاحقًا. يعد الرمز الأبجدي الرقمي الطويل وغير المفهوم ، في الواقع ، رابطًا لفرع تسجيل Windows حيث توجد المكتبة مكتبة كائنات Microsoft Forms 2.0، والتي يمكن أن تخلق مثل هذه الأشياء. في بعض الأحيان تسمى هذه الحيلة أيضًا الربط المتأخر الضمني. إذا لم تستخدمه ، فسيتعين عليك إنشاء رابط لهذه المكتبة في الملف من خلال القائمة أدوات - مراجع.
  • يعتبر مجموع الخلايا المحددة أمرًا WorksheetFunction.Sum (Selection)، ثم يتم وضع المبلغ الناتج في الحافظة باستخدام الأمر PutInClipboard

لسهولة الاستخدام ، يمكنك بالطبع تعيين هذا الماكرو لاختصار لوحة المفاتيح باستخدام الزر وحدات الماكرو علامة التبويب المطور (المطور - وحدات الماكرو).

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

نسخ مجموع الخلايا المحددة إلى الحافظة

ليس فقط المبلغ

إذا كنت تريد شيئًا آخر ، بالإضافة إلى المبلغ العادي ، فيمكنك استخدام أي من الوظائف التي يوفرها لنا الكائن ورقة العمل:

نسخ مجموع الخلايا المحددة إلى الحافظة

على سبيل المثال ، هناك:

  • Sum - sum
  • المتوسط ​​- الوسط الحسابي
  • العد - عدد الخلايا التي تحتوي على أرقام
  • CountA - عدد الخلايا المملوءة
  • CountBlank - عدد الخلايا الفارغة
  • الحد الأدنى - الحد الأدنى للقيمة
  • ماكس - أقصى قيمة
  • الوسيط - الوسيط (القيمة المركزية)
  • ... إلخ.

بما في ذلك المرشحات وأعمدة الصفوف المخفية

ماذا لو كانت الصفوف أو الأعمدة مخفية (يدويًا أو بواسطة عامل تصفية) في النطاق المحدد؟ لكي لا نأخذها في الحسبان في المجاميع ، سنحتاج إلى تعديل الكود الخاص بنا قليلاً عن طريق الإضافة إلى الكائن اختيار الملكية SpecialCells (xlCellTypeVisible):

Sub SumVisible () If TypeName (Selection) <> "Range" ثم اخرج من Sub باستخدام GetObject ("جديد: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum (Selection.SpecialCells (xlCellTypeVisible)). PutInClipboard End With End Sub  

في هذه الحالة ، سيتم تطبيق حساب أي دالة إجمالية على الخلايا المرئية فقط.

إذا كنت بحاجة إلى صيغة حية

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

Sub SumFormula () If TypeName (Selection) <> "Range" ثم اخرج من Sub باستخدام GetObject ("جديد: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "= СУММ (" & استبدال (استبدال (التحديد. العنوان ، "،" ، "؛") ، "$" ، "") & ")" .PutInClipboard ينتهي بـ End Sub  

الجمع بشروط إضافية

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

 Sub CustomCalc () Dim myRange As Range If TypeName (Selection) <> "Range" ثم اخرج من Sub لكل خلية في التحديد If cell.Value> 5 And cell.Interior.ColorIndex <> xlNone ثم إذا كان myRange لا شيء ، فقم بتعيين myRange = cell Else Set myRange = Union (myRange، cell) End If Next With GetObject ("New: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum (myRange) .PutInClipboard End With End Sub  

كما يمكنك أن تتخيل بسهولة ، يمكن تعيين الشروط على الإطلاق - حتى تنسيقات الخلايا - وبأي كمية (بما في ذلك عن طريق ربطها مع عوامل التشغيل المنطقية أو أو و). هناك متسع كبير للخيال.

  • تحويل الصيغ إلى قيم (6 طرق)
  • ما هي وحدات الماكرو ، وكيفية استخدامها ، ومكان إدراج التعليمات البرمجية لـ Visual Basic
  • معلومات مفيدة في شريط الحالة في Microsoft Excel

اترك تعليق