برای من بسیار عجیب است که همه افراد حرفهای و البته با سواد اکسل و همچنین سایتهای مشهور حسابداری با روش تابع IF مالیات حقوق را در اکسل حساب میکنند (من تا به حال ندیدهام که کسی از روش دیگری حساب کند) و به همین دلیل مجبور هستند که برای هر سال تمامی فرمول را ویرایش کنند که کاری است وقت گیر.
البته عجیبتر آن است که همگی در این IF بسیار شلوغ از تابع AND استفاده میکنند ?. اشتبااااااه است. کافی است که فرمول را از آخرین بازه به سمت اولین بازه بنویسید که نیازی به AND هم نباشد.
برای آنکه یکبار فرمول را بنویسید و میتوانید از خاصیت مشابه تابع VLOOKUP استفاده کنید تا برای همیشه و همه سالها بتوانید مالیات حقوق را محاسبه کنید و فقط باید اعداد جدول مالیات بر حقوق را به روز رسانی کنید. بیایید شروع کنیم.
در مقاله «آموزش تابع VLOOKUP در اکسل - قدم به قدم» شما با تابع VLOOKUP آشنا شدهاید. در آن مقاله گفتیم که تابع VLOOKUP چهار عدد ورودی دارد و سپس سه ورودی آنرا به صورت دقیقی شرح دادیم اما ورودی چهارم را گفتیم که عدد 0 بگذارید و دلیلش را فعلا نپرسید. حال در این مقاله قصد دارم که ورودی چهارم (ورودی آخر) تابع VLOOKUP و کاربردهای آن را به خصوص در محاسبه مالیات حقوق را به شما آموزش دهم.
قبل از شروع چند نکته ساده بگویم:
1) ورودی چهارم (آخرین ورودی) تابع VLOOKUP میتواند 0 یا 1 باشد.
2) به جای عدد 0 میتوانید FALSE بگذارید و به جای عدد 1 هم میتوان TRUE گذاشت. هیچ مشکلی پیش نمیآید.
3) ورودی آخر تابع VLOOKUP اختیاری است. یعنی میتوانید اصلا چیزی آنجا تایپ نکنید. در این صورت خود اکسل مقدار ورودی چهارم را 1 یا همان TRUE فرض میکند و تابع VLOOKUP کارش را انجام خواهد داد.
با توجه به این نکتهها هر سه فرمول زیر در اکسل نتیجه / خروجی یکسانی دارند:
=VLOOKUP("BAHAR" , C:E , 3 , 1)
=VLOOKUP("BAHAR" , C:E , 3 , TRUE)
=VLOOKUP("BAHAR" , C:E , 3 )
شرح ورودی آخر VLOOKUP به زبان آدمیزاد
در شکل زیر میبینید که مک کوئین برای پیمودن 100 کیلومتر از مسیر بنزین کافی دارد. قبل از مسابقه او جدول جایگاههای بنزین طی مسیر را بررسی میکند تا تصمیم بگیرد که در کدام جایگاه باید برای زدن بنزین توقف کند. بدیهی است که در واقعیت شانس کمی وجود دارد که دقیقا یک جایگاه در 100 کیلومتری موجود باشد.
قطعا شما تایید میکنید که بهترین جایگاه برای مک کوئین، جایگاه «مجی» است که در 92 کیلومتری است.
تبریک میگم، تموم شد، این کل درس VLOOKUP بود که باید به شما ارائه میدادم!
بگذارید این تصمیم مک کوئین را دقیقا بررسی کنیم:
1) مک کوئین اگر به دنبال جایگاهی که «دقیقا در 100 کیلومتری است» بگردد، آنرا نمییابد. (در اکسل خطای N/A# را میبینیم) و این کاملا درست است که گاهی دقیقا چیزی که میخواهیم وجود ندارد اما چیزی نزدیک (یا مشابه) به آن برای ما قابل قبول است.
2) جدولی که جلوی مک کوئین قرار دارد، یک ویژگی خیلی مهم دارد. این جدول «صورت سعودی» است (یعنی sort از کم به زیاد شده است). اگر این جدول این گونه مرتب نشده باشد، کاملا محتمل است که مک کوئین در یافتن جایگاه صحیح دچار اشتباه شود.
3) در جدول جایگاههای بنزین، نزدیکترین عدد به 100، جایگاه ترجی در 106 کیلومتری است. اما مک کوئین به دنبال نزدیکترین عدد نیست. بلکه برای او «کمترین نزدیکترین» جایگاه به 100 مهم است. بنابراین جایگاه 92 را مییابد.
حال بیایید این جدول را در اکسل وارد کنیم و ببینم که با VLOOKUP در اکسل چگونه میتوان نام جایگاه مناسب را یافت.
حالت اول) اگر آخرین ورودی 0 باشد
بگذارید آخرین ورودی را مانند مقاله قبل عدد 0 بگذاریم و ببینم که خروجی تابع چه میشود.
=VLOOKUP(100, B:C, 2, 0)
خواهیم دید که اکسل خطای N/A# میدهد. یعنی تابع VLOOKUP نمیتواند در جدول فوق عدد 100 را بیابید و به ما میگوید که 100 نیست. بنابراین اگر ورودی آخر عدد 0 باشد یعنی ما به دنبال دقیقا عدد 100 هستیم و مشابه قبول نیست!
حالت دوم) اگر آخرین ورودی عدد 1 باشد
حال آخرین ورودی را به جای 0 عدد 1 میگذاریم:
=VLOOKUP(100, B:C, 2, 1)
و میبینیم که VLOOKUP برای ما در این جدول عدد 92 را مییابد و میگوید که در جلوی آن «ترجی» تایپ شده است .
اگر ورودی آخر (چهارمین ورودی) عدد 1 باشد یعنی مشابه هم قبول است.
مشابه یعنی کمترین نزدیکترین عدد به مقدار معلوم
مشابه به معنای نزدیکترین عدد نیست، بلکه کمترین نزدیکترین است.
اگر ورودی آخر عدد 1 باشد، باید جدول حتما به شکل صعودی (یعنی از کم به زیاد) Sort (مرتب) شده باشد.
سوال 1) با توجه به جدول فوق، نتیجه فرمول زیر چیست؟
=VLOOKUP(80, B:C, 2, 1)
پاسخ: «اجی» است. یعنی تابع VLOOKUP در جدول عدد 80 را یافت و گفت جلوی آن (دومین ستون جدول) مقدار «اجی» تایپ شده است.
سوال 2) با توجه به جدول فوق نتیجه فرمول زیر چیست؟
=VLOOKUP(105.99999 , B:C, 2, 1)
پاسخ: «مجی» است. اگر چه عدد 105.9999 بسیار نزدیک به 106 است، اما همانطور که گفتیم تابع VLOOKPU نزدیکترین عدد را نمییابد بلکه به دنبال کمترین نزدیکترین عدد میگردد که همان 92 است و جلوی آن «مجی» است.
اگر ورودی آخر (چهارمین ورودی) تابع VLOOKUP ، عدد 0 یا FALSE باشد، VLOOKUP به دنبال مقدار معلوم در جدول میگردد و اگر نیابد، به ما خطا میدهد.
اگر ورودی آخر (چهارمین ورودی) تابع VLOOKUP، عدد 1 یا TRUE یا خالی باشد، VLOOKUP به دنبال معلوم و یا کمترین نزدیکترین عدد به معلوم میگردد.
در حالت مشابه، حتما باید جدول از کم به زیاد (صعودی) مرتب (sort) شده باشد در غیر اینصورت VLOOKUP مقدار اشتباهی را مییابد.
حال وقت آن است که به چند نمونه کاربردی بپردازیم. باید بگویم که کاربرد یافتن مشابه در VLOOKUP در مواقعی کاربرد دارد که جدولی به صورت «بازهای» برای ما تعریف میشود.
مثال 1) بازاریابان شرکتی به شرح زیر درصدی از مبلغ فروش را به عنوان پورسانت دریافت میکنند، فرمولی بنویسید که برای هر فرد میزان درصدی که باید دریافت کند را محاسبه نماید.
اگر مبلغ فروش بین 0 تا 99 بود، %0
اگر مبلغ فروش بین 100 تا 499 بود، %5
اگر مبلغ فروش بین 500 تا 999 بود، %8
برای مبالغ بیشتر از 1000، %10
راه حل 1 - کسانی که VLOOKUP و حالت مشابه آن را بلد نیستند، این فرمول را با IF مینویسند. فرض کنید که مبلغ فروش در سلول B2 وارد شده است، فرمول آن با IF میشود:
=IF(B2<100, 0%, IF(AND(B2>=100, B2<500), 5%, IF(AND(B2>=500, B2<1000), 8%, 10%)))
اگر چه این فرمول کاملا درست است اما بدیهی است که بسیار طولانی است و ویرایش آن سخت خواهد بود در ضمن آنکه اگر هر بازهی جدیدی اضافه شود مثلا درصد فروش بین 200 تا 300 بخواهد %6 شود، باید کل این فرمول بازنویسی شود که کاری دشوار است.
راه حل 2 - کسانی که VLOOKUP و حالت مشابه آن را بلد هستند به سادگی این شرح را به صورت یک جدول در میآورند در سلولهایی جداگانه تایپ میکنند و سپس روی آن فقط یک VLOOKUP مشابه مینویسند.
مثال 2) محاسبه مالیات حقوق سال ۱۴۰۰ در اکسل
اگر به جدول محاسبه مالیات حقوق و دستمزد نگاه کنید، خواهید دید که شبه جدولی است که مک کوئین دیده است. در واقع جدول مالیات حقوق به صورت بازه بازه نوشته میشود.
تقریبا اکثر حسابدارها مالیات حقوق را در اکسل با فرمول را با IF حل میکنند که سرانجام فرمولی بسیار شلوغ میشود و خطایابی و اصلاح آن برای سالهای بعد دشوار خواهد بود.
یک نمونه از این فرمول اینگونه است (مطمئن نیستم که این فرمول صحیح باشد آخر من نیز مانند شما حوصله بررسی و چک کردن آنرا ندارم):
=IF(AI6<=23000000,0,) IF(AND(AI6>23000000,AI6<=92000000),((AI6-23000000)*0.1),IF(AND(AI6>92000000,AI6<=115000000),((6900000)+((AI6-92000000)*0.15)),IF(AND(AI6>115000000,AI6<=161000000),(10350000+(AI6-115000000)*0.25),IF(AND(AI6>161000000,AI6<=230000000),(21850000+(AI6-161000000)*0.35))))))
در حالی که میتوانید این فرمول دشوار را با نوشتن VLOOKUP در حالت مشابه ، حل کنید و برای سالیان بعد هم کافی است که فقط جدول مالیات را تغییر دهید و لازم نیست که به فرمول محاسبه مالیات دست بزنید.
برای نوشتن فرمول محاسبه مالیات حقوق باید 3 تابع VLOOKUP بنویسیم:
1) یک VLOOKUP برای یافتن درصد مالیات متعلق به این حقوق
2) یک VLOOKUP برای یافتن مجموع مالیاتهای بازههای قبلی
3) یک VLOOKUP برای یافتن حد پایینی مالیات متعلق به این حقوق (که اختلاف آن با حقوق باید در مالیات متعلق به این حقوق ضرب شود)
در تصویر زیر فرمول نهایی محاسبه مالیات حقوق و دستمزد در اکسل را میتوانید ببیند و البته فایل آن را از انتهای همین مقاله دانلود کنید.
نکتهها و پرسشهای متداول:
1) فرق بین TRUE و 1 در آخرین ورودی تابع چیست؟
پاسخ: هیچ فرقی ندارند. گفتیم که TRUE یا 1 به معنای یافتن مشابه هستند.
2) اگر بخواهیم که نزدیکترین مقداری را پیدا کنیم، باید چه کار کنیم؟
پاسخ: گفتیم که VLOOKUP نزدیکترین کمترین مقدار را مییابد و نه نزدیکترین را. به همین دلیل باید از تکنیکهای دیگری استفاده کنید و VLOOKUP اینکار را برای شما انجام نمیدهد.
3) اگر لیست Sort (مرتب) نباشد، چه خواهد شد؟
پاسخ: توجه داشته باشید که وقتی VLOOKUP در حالت 0 یا False (یعنی دقیقا خودش نه مشابهاش) کار میکند، کل لیست را تا انتها (یعنی آخرین مقدار) بررسی میکند. اما در حالت 1 یا TRUE (یعنی حالت مشابه) ، VLOOKUP همین که به مقداری رسید که از معلوم بیشتر است، همان جا کارش را پایان میدهد و لیست را تا انتها بررسی نمیکند. بنابراین اگر لیست شما به صورت صعودی (از کم به زیاد) Sort نشده باشد، VLOOKUP همین که مقداری را یافت که از معلوم بزرگتر است، کارش را پایان میدهد و مقداری که قبل از آن وارد شده است را به عنوان مشابه در نظر میگیرد.
4) نتوانستم دقیقا متوجه شوم که فرمول محاسبه مالیات حقوق چگونه کار میکند، میشود بیشتر توضیح دهید؟
پاسخ: این فرمول کمی مشکل است و پیشنهاد میکنم که خودتان برای فهمیدن آن حداقل 2 ساعت وقت بگذارید و اگر بازهم متوجه نشدید، با 2 نفر از همکارانی که اکسل آنها خوب است جلسهای 45 دقیقهای بگذارید و سعی در بررسی، بازنویسی و درک این فرمول کنید. اگر پس از این جلسه متوجه نشدید، به من ایمیل بدهید. (در واقع خواستم تذکر دهم که درک این فرمول یا یک نگاه ساده و گذرا ممکن نیست و باید برای یافتن مفهوم آن تلاش کنید و وقت بگذارید. مطمئن باشد که پس از مدتی آنرا درک خواهید کرد).
5) تابع LOOKUP چه کاری میکند؟
اولا کسی از این تابع استفاده نمیکند و ثانیا این تابع دقیقا همان VLOOKUP در حالت مشابه است.
6) آیا از حالت مشابه میتوان برای یافتن اسامی که مشابه هستند استفاده کرد؟
خیــــــــــــــر !! این یکی از تصورات غلط رایج است. VLOOKUP در حالت مشابه فقط برای اعداد کاربرد دارد و اگر بر روی متنها بکار رود،آن متن به یک عدد (کد اسکی یا یونیکد) تبدیل میشود و بر اساس آن عدد محاسبه و یافتن انجام میشود.
شما هم تجربه یا دیدگاه خود را بنویسید:
باسلام ممنون از توضیحات جامع شما
من میخواهم در سلول جلوی یک سلول کشویی که شامل اسامی متریال های مختلف هست، در این سلول بصورت خودکار وزن مخصوص متریال رو که داخل جدول دیگه در شیت دیگه است بخونه
ممنون میشم راهنمایی کنین
با سلام / مقاله تابع vlookup را در سایت مطالعه نمایید.
سلام
بسیار عالی.
من عاشق شیطنت های شما در حین توضیح درس هستم. راستش گاهی فقط برای خواندن نکته های طنز، آنها را می خوانم. ضمن اینکه بسیار عالی هم درس میدهید.
ممنون استاد.
پاینده و شادمان باشید.
سلام
من اعداد و ارقام رو به قانون سال 99 تغییر دادم ولی درست نمیاره مثلا حقوق 123000000 رو میزنم که با فرمول if مالیات به میزان 12600000 رو میاره که درست هست و دستی حساب کنیم هم همین میزان رو میاره ولی با فرمول شما مبلغ 33600000 رو میاره
حتی اگه کل 123000000 هم مشمول مالیات 25 درصد بشه باز هم مقدراش از این کمتر میشه
بله، ایرادی احتمالا در مبالغ ثابت بود که اکنون برطرف شده است.
گفتیم که VLOOKUP نزدیکترین کمترین مقدار را مییابد و نه نزدیکترین را. به همین دلیل باید از تکنیکهای دیگری استفاده کنید و VLOOKUP اینکار را برای شما انجام نمیدهد.
منظور از تکنیکهای دیگر چیست؟
باسلام در تابع VLOOKUP فرمت داده موجود در ستون مقدار معلوم با فرمت داده موجود در ستون اول جدول مجهول یکی باشه؟ مثلا نمیتونه یکی text و اونیکی general یا number باشه؟
با سلام / بله دقیقا باید یکی باشند. زیرا عدد 1 با متن 1 یکسان نیستند.
عالی بود،ممنون
سلام اول از همه شما خیلی خوبید
دوم اینکه
اینو برای مالیات حقوق 99 استفاده کردم و نتیجه درستی نگرفتم یعنی 15 درصد حقوق رو اشتباه حساب میکنه میشه راهنمایی کنید
درود / راه حل همین است که اینجا می بینید، خودتان لطفا مقادیر و محاسبات را چک کنید.
از زحمات شما بینهایت سپاسگزارم. مطالب خیلی خوب تفهیم شده است.
سلام
مرسی بخاطر مطالب خوبت
برای حسابدارها مهم این نیست که جدول sort باشه،اصلا بعضی اوقات نباید sort باشه برای همین مجبورن از if استفاده کنن البته که این راه خودشو داره که میتونن از vlookupاستفاده کنن بعد نتیجه از یه کپی بگیرن و به حالت اولیه برگردونن
حق باشماست،استفاده از if نیازی به Sort ندارد اما معمولا جدول هایی مانند مالیات حقوق، در طی سال ثابت است و Sort نگاه داشتن آن کاری است ثابت.
در ضمن آنکه سادگی و انعطاف پذیری vlookup بسیار بالاتر است.
سعودی اشتباه هست از بس گفتی مرگ بر آل سعود
صورت صعودی درست است گلم
این اشتباه عمدی و برای جلب توجه است.
سلام
لطف میکنید بفرمایید چرا فرمول محاسبه مالیات بر حقوق به این شکل هست؟
ممنونم
شما عالی هستید. خیلی جالب تدریس کردین. خوشحالم با سایتتون آشنا شدم. موفق باشید
سلام خسته نباشید منظور از عدد ثابت در جدول چیه و چرا سلول g7 خالیه
عدد ثابت برابر است با مجموع مالیات هایی که از بازه های قبلی باید بپردازد.