هوش تجاری
ایجاد حلقه با برنامهنویسی VBA در اکسل
اگر به دنبال خودکارسازی صفحه گسترده در اکسل هستید، ماکروها روش خوبی برای انجام این کار میباشند. ماکروها اسکریپتهای خودکار هستند که به طور معمول با استفاده از Visual Basic for Applications (VBA) نوشته میشوند تا به شما در انجام برخی اقدامات در اکسل کمک کنند، مانند فشار دادن خودکار دکمه یا انجام محاسبات.
VBA یک زبان برنامهنویسی مفید است که تحلیلگران داده میتوانند یاد بگیرند زیرا عملکرد اکسل را تقویت کرده و انجام برخی کارها را به طور خودکار (و به طور مکرر) با اسکریپتهای ماکرو سفارشی آسانتر میکند. به عنوان مثال، اگر میخواهید ماکرویی تکرار شود که عملی را به تعداد دفعات مشخصی تکرار کند، میتوانید از VBA For Loop استفاده کنید.
حلقههایی از این دست فقط مختص VBA نیستند؛ در واقع این یک ویژگی مشترک در اکثر زبانهای برنامهنویسی است، که به یک برنامه یا اسکریپت امکان میدهد به طور مداوم در یک دنباله با نقطه شروع و پایان اجرا شود. برای تحلیلگران دادههای اکسل، VBA For Loop موجب میشود بتوانید در سلولها حلقه ایجاد کنید یا تعداد معینی از اقدامات را پس از برآورده شدن معیارها انجام دهید.
این مورد میتواند زمانی باشد که محاسبه مشخصی درج شده یا به مقدار آن رسیده است، یا هنگامی که شما یک کار خاص را در صفحه گسترده خود انجام میدهید (مانند فشار دادن یک دکمه وارد شده به صورت سفارشی). استفاده از VBA For Loop برای ایجاد ماکروهایی ضروری است که هنگام کار در صفحه گسترده به طور مداوم اجرا میشوند.
اگر در برنامهنویسی VBA تازهکار هستید و میخواهید یک ماکرو اساسی (یا حتی پیشرفته) با استفاده از VBA For Loop ایجاد کنید، این مقاله میتواند به شما کمک کند.
VBA For Loops در اکسل چیست و برای چه مواردی استفاده میشود؟
همانطور که قبلاً نیز اشاره کردیم، حلقهها یک مفهوم برنامهنویسی هستند که به برنامه اجازه میدهند خود را تکرار کند. آنها به شکستن کد کمک کرده و تعداد اقدامات رمزگذاری شده خاصی را که برای کمک به بهبود سرعت و کارایی برنامههای شما نوشته شدهاند، کاهش میدهند.
حلقهها ابزاری انعطافپذیر هستند و به شما این امکان را میدهند که یک عمل خاص (مانند تغییر مقادیر سلول) را چند بار تنظیم کنید. یک حلقه همچنین میتواند با عبارات دیگری مانند For و If ترکیب شود، که به تعیین تعداد و مدت زمان اجرای یک اسکریپت کمک میکند.
در VBA، حلقه For یک عمل (یا مجموعهای از اقدامات) را برای یک سری تعداد بار در یک دنباله تکرار میکند. به عنوان مثال، اگر ماکروی داشته باشید (نوشته شده در VBA) که مقادیری را در یک ستون وارد میکند، میتوانید برای این کار از حلقه For استفاده کرده، هر سلول را به طور متوالی پر کنید (به عنوان مثال A1، A2 ، A3 و غیره) تا زمانی که به یک مقدار نهایی برسد).
به عنوان مثال، قطعه کد VBA در تصویر بالا چنین عملی را نشان میدهد. در این مثال، ماکرو VBA برای درج مقادیر در سلولهای ستون A ، از ۱ به ۱۰ و افزایش در تک رقمیها طراحی شده است. با رسیدن به ۱۰، اسکریپت متوقف میشود.
این یک مثال ساده است، اما حلقه For به اندازه کافی قدرتمند است که تقریباً هر عملی را که میخواهید در اکسل به طور مکرر انجام دهید، اجرا کند. اگرچه این راهنما یک آموزش کامل VBA نیست و فرض را بر این میگذارد که شما از قبل تجربه سطح اولیه VBA را دارید، اما به شما امکان میدهد حلقههای ساده VBA را با استفاده از For برای تکرار یک عمل به ترتیب ایجاد کنید.
VBA For Loops در اکسل چگونه کار میکند؟
ما فرض میکنیم که شما درباره چگونگی عملکرد ماکرو VBA پیشزمینهای دارید. معرفی یک حلقه For به شما امکان میدهد کد (یا بخشی از آن) را تنظیم کنید تا به تعداد دفعات مشخصی تکرار شود.
ما با استفاده از یک مثال ساده قابل درک فرآیند را توضیح خواهیم داد. از آنجا که VBA For Loopsبرای اقدامات تکراری محدود مفید است، فرض کنید هنگام فشار دادن یک دکمه (با نام کلاس Button) میخواهید یک پنجره پاپ آپ ظاهر شود.
فشردن دکمه باعث میشود که یک جعبه پاپ آپ تعداد مشخصی از مجموعه، به ترتیب، با استفاده از متغیر varButton به عنوان شماره پایان ظاهر شود (در این حالت، ۱۰). این جعبه پاپ آپ متغیر فعلی را نمایش میدهد که از صفر شروع میشود. سپس این کار را ۹ بار دیگر تکرار میکند تا زمانی که به متغیر varButton (10) برسد.
عمل فشار دادن دکمه حلقه را شروع میکند. از آنجا که آزمون دارای متغیر شروع و پایان است، حلقه قبل از پایان تعداد محدودی اجرا دارد. به طور پیشفرض، مقادیر ۱ افزایش مییابد (با ۰، ۱، ۲ و غیره شروع میشود) اما با افزودن مقدار Step میتوان این مقدار را تغییر داد. به عنوان مثال، تغییر به ۵ به معنای ظاهر شدن فقط سه پنجره پاپ آپ است.
پس از رسیدن به مقدار نهایی، حلقه خارج شده و ماکرو متوقف میشود. با این حال، میتوانید اقدامات دیگری را برای انجام این کار اضافه کنید، مانند تغییر مقدار سلول دیگر یا ایجاد یک پیام پاپ آپ دیگر. میتوانید For Loop را در سایر تستهای منطقی مانند جمله Do while یا If استفاده کنید.
این مثال شامل تمام معیارهای معمول مورد نیاز برای تکمیل حلقه For با استفاده از VBA است. کد مشخص میکند که چند بار عمل در یک دنباله انجام میشود (varButton) و مقدار افزایشی که برای تکرار از طریق دنباله استفاده میشود چیست (Step).
تنها قسمت اختیاری این مثال دکمه مورد استفاده برای شروع ماکرو است. لزوماً نیازی نیست کد ماکرو را با فشار دادن یک دکمه پیوند دهید، زیرا به راحتی میتوانید این حلقه را شروع کرده و با فشار دادن Developer> Macros > Run به صورت دستی ماکرو را فعال کنید.
مواردی که قبل از استفاده از VBA For Loop در اکسل باید در نظر بگیرید
VBA For Loop یک روش انعطافپذیر و دامنهدار است که به کد شما امکان میدهد عملی را به صورت متوالی انجام دهد و فقط در صورت (و زمان) معیارهای خاص متوقف میشود. برای کمک به شما در ایجاد این نوع ماکرو در اکسل، تعدادی نکات وجود دارد که باید آنها را در نظر بگیرید. آنها عبارتند از:
- اگر میخواهید روشی ایجاد کنید که For Loop قبل از رسیدن به مقدار نهایی به پایان برسد، باید دستور Exit For را به کد خود اضافه کنید. این از حلقه خارج میشود و به خط بعدی کد خارج از حلقه میرود (اگر کد شما ادامه یابد). به عنوان مثال، هنگامی که یک دکمه را فشار میدهید میتوانید حلقه را متوقف کنید.
- از VBA For Loop میتوان برای تعداد مشخصی از مقادیر عددی به ترتیب به روش اساسی با استفاده از حلقه For Next استفاده کرد، اما همچنین میتوانید آن را در اشیاء پیچیدهتر (مانند کتابهای کار در صفحه گسترده) به ترتیب و با استفاده از VBA پیچیده برای هر حلقه به کار بگیرید.
- VBA For Loops را میتوان با جملات منطقی دیگری مانند جمله Ifیا Do while قرار داد. این به شما امکان میدهد تصمیمگیری پیچیدهتری را در کد خود ادغام کنید.
- VBA For Loop به ترتیب تکرار میشود، اما با تغییر مقدار Step میتوانید میزان شمارنده حلقه را در هر بار تکرار تغییر دهید. به عنوان مثال، اگر میخواهید حلقه شما به ترتیب دنبالهای حرکت کند که مقدار را ۲ افزایش دهد، باید از مقدار Step 2 استفاده کنید. اگر مقدار Step را ارائه ندهید، شمارنده حلقه از ۱ افزایش مییابد.
- اگر VBA For Loop شما قابل اجرا نباشد، یا اگر کدتان دارای خطا باشد، VBA با یک خطا به حالت اشکالزدایی خارج میشود. برای رفع این مشکل در ویرایشگر داخلی VBA اکسل باید کد خود را عیبیابی کنید.
گرچه این مثالها مهم هستند، شما باید قبل از نوشتن کد، محدودیتهای شناخته شده VBA را که در اینجا ذکر نشدهاند در نظر بگیرید.
نحوه افزودن VBA For Loop در اکسل با استفاده از Visual Basic Editor
با استفاده از Visual Basic Editor میتوانید یک VBA For Loop در اکسل ایجاد، آزمایش و اجرا کنید. این ویرایشگر داخلی VBA اکسل است که به شما امکان میدهد ماکروهای خود را با استفاده از VBA ایجاد کرده یا ماکروهای موجود ایجاد شده را با استفاده از ابزار Macro Recorder ویرایش کنید.
برای شروع ایجاد ماکرو VBA با استفاده از حلقه For در Visual Basic Editor، میتوانید این مراحل را دنبال کنید:
مرحله ۱: VBA Editor را باز کنید.
ابتدا با باز کردن Visual Basic Editor در اکسل شروع کنید.
این کار را میتوانید با فشار دادن کلیدهای Alt + F11 روی صفحه کلید خود (یا Option + F11 در Mac) انجام دهید. اگر قبلاً تب Developer را در نوار روبان موجود در منوی تنظیمات اکسل خود فعال کردهاید، میتوانید برای باز کردن ویرایشگر، Developer> Visual Basic را نیز فشار دهید.
وقتی مهارت VBA For Loops را کسب کردید، میتوانید با آزمایش Do Until Loops، رویدادهای صفحه کار سفارشی و موارد دیگر، کارها را بیشتر ادامه دهید. ترفندهای VBA مانند اینها به تحلیلگران داده اجازه میدهد تا برنامههای پیچیدهای را در داخل صفحات اکسل ایجاد کنند که میتواند کارها را به صورت خودکار انجام دهد یا محاسبات را تسریع کند، اما ابتدا باید بر VBA تسلط داشته باشید.جمعبندی
مجموعه
آموزش اکسل
سلام
در یک سلول یک شماره کارتی داریم که با یک فرمول نام بانک آنرا در سلول روبروی آن شناسایی میکنیم .
حال اگر رقم آخر شماره کارت گرد شده باشد چگونه با یک حلقه ( یا سایر روش ها) ارقام ۱ تا ۹ را به شکلی به آخر همان سلول اضافه کنیم که با یافتن نام صحیح بانک از حلقه خارج شود و سمت آیتم بعدی( کارت بعدی در سطر بعد) برود و همین روند را تا آخرین کارت ادامه دهد؟
تشکر
با سلام و عرض خسته نباشید
ما دوتا شیت داریم. در هر دو شیت، یک جدول دو ستونی وجود دارد، در شیت اول هر دو ستون جدول دارای مقادیری است که ستون اول اسم هست و ستون دوم عدد. میخواهیم وقتی در ستون اول شیت دوم اسمی نوشته شد، اگر اون اسم در ستون اول شیت اول موجود بود، مقدار عددی مقابل اون اسم به مقدار عدد وارد شده در ستون دوم شیت دوم، کم بشه.
ممنون میشم کمکم کنید کدشو بنویسم?
سلام استاد وقت بخیر. به راهنمایی میخواستم
دستور ماکرو اجرای محاسبه دستی شیت اکسل تا رسیدن یک سلول خاص به نتایجه دلخواه میخواستم بدونم چی هست.
فرض کنید تو سلول E2 فرمولی نوشته شده که نتیجه یا عبارت OK هست و یا عبارت NOK. بار هربار فشردن کلید میانبرF9 محاسبات مجدد انجام میشه. این محاسبات تا جایی باید انجام بشه که سلول E2 عبارت OK نمایش بده. به محض رسیدن به عبارت OK در سلول E2 محاسبات به پایان میرسه و حلقه بسته میشه.
از چه کد ماکرو باید استفاده بشه ؟
Sub Macro32()
Dim i As Integer
For i = i To 2000
Calculate
Next i
End Sub
میخوام این ماکرو تا زمانی که سلول E2 به عبارت “OK” رسید ادامه داشته باشه و بعد متوقف بشه. ممنون میشم راهنمایی بفرمایید که به کد ماکرو بالا چی اضافه کنم که این کار برام انجام بده.
سپاس