
لینک کوتاه : https://magicfile.ir/?p=4669
دانلود ماکرو حرفهای اکسل برای تهیه گزارش سود و زیان (درآمدها و هزینهها)
کدی که در این فایل VBA ارائه شده، یک ابزار پیشرفته جهت تحلیل مالی اما موثر برای کسبوکارهای کوچک، فریلنسرها، فروشگاههای خانگی یا هر شخصی است که میخواهد درآمدها و هزینههای خود را در بازههای زمانی مشخص (بر اساس ماه شمسی) بررسی و ارزیابی کند. این کد، یک گزارش سود و زیان ماهانه تولید میکند که در آن مجموع درآمدها، هزینهها و سود یا زیان خالص نمایش داده میشود. آنچه این ابزار را از نمونههای مشابه متمایز میکند، پشتیبانی کامل از تاریخ شمسی (Jalali) با فرمت دارای اسلش (مانند 1404/01
) و توانایی تحلیل اطلاعات با دستهبندی جزئیتر است، که باعث میشود این فایل برای استفاده در محیطهای فارسیزبان بسیار کاربردی و دقیق باشد.
ساختار کد و توابع مورد استفاده
کد به دو بخش اصلی تقسیم شده است: تابع CreateShamsiProfitLossReport_WithSlashDate
برای تولید یک گزارش ساده ماهانه و تابع پیشرفتهتر AdvancedMonthlyProfitLossReport
که شامل تحلیل دستهبندیشده با نمودار و فرمتبندی حرفهای است. در ابتدا، شیت "Data" در صورت وجود حذف شده و مجدداً با دادههای نمونهای شامل تاریخ شمسی، نوع تراکنش و مبلغ ایجاد میشود. سپس از کاربر درخواست میشود که ماه و سال شمسی مورد نظر خود را با فرمت yyyy/mm
وارد کند. با استفاده از توابع سفارشی NoSlash
، SalMah1
و SalMah2
(که باید از قبل در فایل اکسل تعریف شده باشند)، اسلش از تاریخ حذف شده و بازهی اولین و آخرین روز ماه محاسبه میگردد تا فیلتر زمانی دقیق اعمال شود.
منطق محاسبات و دستهبندیها
در هر دو تابع، کد با پیمایش سطرهای موجود در شیت دادهها، تاریخها را بررسی کرده و فقط تراکنشهایی را لحاظ میکند که در بازه ماه انتخابشده قرار دارند. در نسخه ساده، صرفاً مجموع کل درآمد و هزینه محاسبه میشود. اما در نسخه پیشرفتهتر، تراکنشها بر اساس شرح آنها (ستون D) دستهبندی میشوند و برای هر دسته، مجموع مبلغ نگهداری میگردد. برای این منظور از شیء Scripting.Dictionary
استفاده شده که امکان ذخیرهسازی جفتهای کلید-مقدار را فراهم میکند؛ این کلیدها معمولاً شامل نوع شرح تراکنش (مانند فروش، اجاره، حمل و نقل و...) هستند. این بخش از کد زمینهساز ایجاد گزارشات تحلیلی دقیقتر و قابل استنادتر میشود.
ساخت گزارش نهایی با طراحی زیبا و کاربردی
در هر دو حالت، اگر شیت گزارش از قبل وجود داشته باشد پاکسازی میشود، در غیر این صورت بهصورت خودکار ساخته میشود. عنوان گزارش، تاریخ ماه انتخابشده و مقادیر کل درآمد، هزینه و سود/زیان خالص با قالببندی دقیق وارد میشود. در نسخه پیشرفتهتر، فرمتبندی سلولها حرفهایتر بوده و شامل فونت برجسته، تراز بندی مرکز، ادغام سلولها و رنگبندی شرطی برای وضعیت سود یا زیان میباشد (مثلاً رنگ سبز برای سود و رنگ قرمز برای زیان). همچنین درصد سهم هزینهها و سود خالص از کل درآمد محاسبه شده و بهصورت درصدی در کنار ارقام ریالی نمایش داده میشود. این سبک گزارشگیری باعث میشود کاربر در یک نگاه، وضعیت مالی خود را بهصورت شفاف و قابل درک مشاهده کند.
نمونه تصاویر در زمان اجرا
✅ کد اول: CreateShamsiProfitLossReport_WithSlashDate
این کد یک نمونه ساده و پایه از گزارش سود و زیان ماهانه به زبان فارسی است و مراحل زیر را انجام میدهد:
📌 ۱. حذف شیت "Data" در صورت وجود و ایجاد مجدد آن
با دادههای نمونه شامل:
-
تاریخ شمسی با فرمت "YYYY/MM/DD"
-
نوع تراکنش ("درآمد" یا "هزینه")
-
مبلغ (به ریال)
📌 ۲. دریافت ورودی ماه شمسی
کاربر باید ماه مورد نظر را وارد کند مثل "1404/01"
.
📌 ۳. پردازش و محاسبه
-
تبدیل تاریخ ورودی به فرمت بدون اسلش (مثل "140401")
-
تعیین اول و آخر ماه با استفاده از توابع سفارشی
SalMah1
وSalMah2
-
محاسبه مجموع درآمدها و هزینهها
-
محاسبه سود/زیان خالص
📌 ۴. ایجاد شیت "گزارش سود و زیان"
گزارش نهایی در یک شیت جدید نمایش داده میشود:
-
عنوان گزارش
-
سال/ماه انتخابی
-
مجموع درآمد، هزینه و سود/زیان
-
رنگ سبز برای سود و قرمز برای زیان
✅ کد دوم: AdvancedMonthlyProfitLossReport
این نسخه پیشرفتهتر و حرفهایتر است با امکانات اضافه:
📌 تفاوتها و ویژگیهای بیشتر نسبت به نسخه ساده:
-
فرض وجود شیت Data آماده با ستون شرح (ستون D)
-
به جای ایجاد داده، فقط از دادههای موجود استفاده میکند.
-
-
گزارش پیشرفته با جزئیات:
-
درآمدها و هزینهها به تفکیک شرح ذخیره میشوند (در دیکشنری)
-
درصد سهم هزینه از درآمد و سود خالص محاسبه و نمایش داده میشود.
-
عنوان گزارش همراه با تاریخ شمسی به حروف از طریق تابع
Matni
-
-
گزارش بصری و زیبا:
-
استفاده از
Merge
,Bold
,Font Size
,Color
-
پسزمینه سبز برای سود و قرمز برای زیان
-
-
آمادهسازی برای درج نمودار (ChartObject)
اگر ادامه کد را اضافه کنید میتوانید:-
نمودار دایرهای (Pie) از دستهبندی درآمد/هزینه رسم کنید
-
یا نمودار میلهای برای مقایسه بصری شرحها
-
📦 توابع سفارشی مورد نیاز:
برای اجرای این کد، حتماً باید توابع زیر از قبل در فایل اکسل تعریف شده باشند:
تابع | کاربرد |
---|---|
NoSlash(dateString) |
حذف / از تاریخ (مثلاً "1404/01/05" ← "14040105") |
SalMah1(yyyymm) |
اولین روز ماه شمسی به فرمت عددی |
SalMah2(yyyymm) |
آخرین روز ماه شمسی به فرمت عددی |
Matni(yyyymm,1) |
نمایش ماه و سال شمسی به حروف (مثلاً "فروردین 1404") |
این فایل شامل دو ماکروی حرفهای برای محاسبه و نمایش گزارش سود و زیان بر اساس تاریخ شمسی است. مناسب برای کسبوکارها، فریلنسرها و حسابداران ایرانی با تاریخهای "1404/01/10" و ...
همراه با قابلیت دریافت ماه به صورت "1404/02" و محاسبه دقیق سود و زیان با ظاهر زیبا، دستهبندی و آمادگی رسم نمودار.
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.