فهرست
گاهی اوقات برای رسیدن به برخی چیزها زمان بسیار زیادی طول می کشد. اما هنگامی که آنها قبلاً اختراع شده اند، پس از این واقعیت، آشکار و حتی پیش پا افتاده به نظر می رسند. از سریال "چی، ممکن بود؟"
از همان اولین نسخه ها، نوار وضعیت در پایین پنجره مایکروسافت اکسل به طور سنتی مجموع سلول های انتخاب شده را نمایش می داد:
در صورت تمایل، حتی میتوان روی این نتایج کلیک راست کرد و از منوی زمینه دقیقاً کدام توابع را میخواهیم ببینیم انتخاب کنیم:
و به تازگی، در آخرین بهروزرسانیهای اکسل، توسعهدهندگان مایکروسافت یک ویژگی ساده اما مبتکرانه را اضافه کردهاند – حالا وقتی روی این نتایج کلیک میکنید، آنها در کلیپ بورد کپی میشوند!
زیبایی
اما در مورد کسانی که هنوز (یا در حال حاضر؟) چنین نسخه ای از اکسل را ندارند، چطور؟ اینجاست که ماکروهای ساده می توانند کمک کنند.
کپی کردن مجموع سلول های انتخاب شده در کلیپ بورد با استفاده از یک ماکرو
در برگه باز کنید توسعه دهنده (توسعه دهنده) سردبیر ویژوال بیسیک یا از این میانبر صفحه کلید استفاده کنید دگرساز+F11. ماژول خالی جدید را از طریق منو درج کنید درج - ماژول و کد زیر را در آنجا کپی کنید:
Sub SumSelected() If TypeName(Selection) <> "Range" سپس از Sub با GetObject خارج شوید ("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Endboard(Selection)
منطق آن ساده است:
- ابتدا "محافظت در برابر احمق" می آید - ما بررسی می کنیم که دقیقاً چه چیزی برجسته شده است. اگر سلول ها انتخاب نشده اند (اما، برای مثال، یک نمودار)، پس از ماکرو خارج شوید.
- سپس با استفاده از دستور دریافت شی ما یک شی داده جدید ایجاد می کنیم که مجموع سلول های انتخاب شده ما بعداً ذخیره می شود. یک کد الفبایی طولانی و نامفهوم در واقع پیوندی به شعبه رجیستری ویندوز است که کتابخانه در آن قرار دارد. کتابخانه شیء مایکروسافت فرم 2.0، که می تواند چنین اشیایی را ایجاد کند. گاهی به این ترفند نیز گفته می شود دیر صحافی ضمنی. اگر از آن استفاده نمی کنید، باید از طریق منو پیوندی به این کتابخانه در فایل ایجاد کنید ابزار - مراجع.
- مجموع سلول های انتخاب شده یک دستور در نظر گرفته می شود WorksheetFunction.Sum(انتخاب)، و سپس مقدار بدست آمده با دستور روی کلیپ بورد قرار می گیرد PutInClipboard
برای سهولت استفاده، البته می توانید این ماکرو را با استفاده از دکمه به میانبر صفحه کلید اختصاص دهید ماکرو برگ توسعه دهنده (توسعه دهنده - ماکروها).
و اگر میخواهید ببینید دقیقاً چه چیزی پس از اجرای ماکرو کپی شده است، میتوانید پنل Clipboard را با استفاده از فلش کوچک در گوشه سمت راست پایین گروه مربوطه روشن کنید. اصلی (خانه) تب:
نه تنها مقدار
اگر علاوه بر مقدار پیش پا افتاده چیز دیگری می خواهید، می توانید از هر یک از توابعی که شی در اختیار ما قرار می دهد استفاده کنید. تابع کاربرگ:
به عنوان مثال، وجود دارد:
- جمع - جمع
- میانگین - میانگین حسابی
- شمارش - تعداد سلول های دارای اعداد
- CountA - تعداد سلول های پر شده
- CountBlank - تعداد سلول های خالی
- حداقل - حداقل مقدار
- حداکثر - حداکثر مقدار
- میانه - میانه (مقدار مرکزی)
- … و غیره.
اگر ردیف ها یا ستون ها (به صورت دستی یا توسط یک فیلتر) در محدوده انتخاب شده پنهان شوند، چه؟ برای اینکه آنها را در مجموع در نظر نگیریم، باید کمی کد خود را با افزودن به شی تغییر دهیم. انتخاب ویژگی SpecialCells (xlCellTypeVisible):
Sub SumVisible() If TypeName(Selection) <> "Range" سپس از Sub با GetObject ("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") خارج شوید. پایان PutInClipboard با End Sub
در این مورد، محاسبه هر تابع کل فقط برای سلول های قابل مشاهده اعمال می شود.
اگر به یک فرمول زنده نیاز دارید
اگر رویاپردازی کنید، می توانید سناریوهایی را به دست آورید که بهتر است نه یک عدد (ثابت)، بلکه یک فرمول زنده را در بافر کپی کنید، که مجموع مورد نیاز ما برای سلول های انتخاب شده را محاسبه می کند. در این مورد، شما باید فرمول را از قطعات بچسبانید، حذف علائم دلار را به آن اضافه کنید و کاما (که به عنوان جداکننده بین آدرس های چندین محدوده انتخاب شده در VBA استفاده می شود) با یک نقطه ویرگول جایگزین کنید:
Sub SumFormula() If TypeName(Selection) <> "Range" سپس با GetObject از Sub خارج شوید("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУМ((" & Replace.Replace. آدرس، "،"، ";")، "$"، "") و ")" .PutInClipboard پایان با End Sub
جمع با شرایط اضافی
و در نهایت، برای افراد کاملا دیوانه، می توانید یک ماکرو بنویسید که نه همه سلول های انتخاب شده، بلکه فقط آنهایی را که شرایط داده شده را برآورده می کنند، خلاصه می کند. بنابراین، به عنوان مثال، یک ماکرو به نظر می رسد که مجموع سلول های انتخاب شده را در بافر قرار می دهد، اگر مقادیر آنها بزرگتر از 5 باشد و در عین حال با هر رنگی پر شده باشد:
Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" سپس برای هر سلول در Selection از Sub برای هر سلول خارج شوید اگر cell.Value > 5 و cell.Interior.ColorIndex <> xlNone سپس اگر myRange چیزی نیست سپس myRange را تنظیم کنید = cell Else Set myRange = Union (myRange، سلول) End If End If End سلول بعدی با GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange.
همانطور که به راحتی می توانید تصور کنید، شرایط را می توان کاملاً در هر نوع - تا فرمت های سلولی - و در هر کمیت (از جمله با پیوند دادن آنها با عملگرهای منطقی یا یا و) تنظیم کرد. فضای زیادی برای تخیل وجود دارد.
- تبدیل فرمول ها به مقادیر (6 روش)
- ماکروها چیست، چگونه از آنها استفاده کنیم، کجا کد ویژوال بیسیک را وارد کنیم
- اطلاعات مفید در نوار وضعیت مایکروسافت اکسل