تفاوت تابع IF و IIF
تابع IF یکی از پرکاربرد ترین توابع موجود در اکسل هست که تقریبا هرکسی با آن آشناست. اما نکته جالب در مورد این تابع اینجاست که ما همچین تابعی در اکسس نداریم و به عنوان جایگزیین شاهد وجود تابع IIF هستیم!
جالبتر آنکه توابع بسیار زیادی وجود دارند که در دو برنامه مایکروسافت اکسل و مایکروسافت اکسس مشترک هستند، اما در مورد یکی از معروفترین توابع اینطور نیست!
علت این تفاوت به ماهیت دو برنامه و تفاوت عملکردی که توابع طراحی شده در محیط گرافیکی دارند، برمیگردد.
تفاوت عملکرد یک تابع که توسط برنامه نویس ایجاد میشود و اصطلاحا توابع سفارشی نامیده میشود با توابع داخلی اکسل، بسیار فاحش بوده و مخصوصا در تعداد زیاد رکورد (حتی در حد چند هزار ردیف) باعث کاهش شدید عملکرد اکسل میشوند. این تفاوت عملکرد به دلیل نوشته شدن توابع اکسل با کدهای سطح پایین و بهینه بودن کدنویسی هست که البته در این مبحث از این زاویه چندان ورود نخواهیم کرد.
حال اگر با زبان های برنامه نویسی آشنایی داشته باشید، مطمئنا از وجود تابع IF در زبان های برنامه نویسی مختلف آگاه هستید. هر زبان برنامه نویسی با کمی تفاوت جزیی تابع IF را در ساختار خود پیاده کرده و مورد استفاده قرار میدهد.
برنامه Microsoft Access نیز از این قاعده مستثنی نبوده و در محیط برنامه نویسی VBA شاهد توابع مختلفی هستیم که یکی از آنها تابع IF میباشد. اما ساختار تابع IF در کدنویسی به شکلی نیست که بتوان از آن در محیط گرافیکی استفاده کرد. از طرفی هم توابع مورد استفاده در محیط گرافیکی اکسس تماما در محیط کدنویسی موجود هستند و از لحاظ کارایی برتری خاصی نیز بر یکدیگر ندارند.
لذا جهت ایجاد تمایز مابین تابع IF در محیط گرافیکی و تابع IF در محیط کدنویسی، شکل دستوری تابع IF در محیط گرافیکی به صورت IIF تغییر پیدا کرد تا تداخلی از لحاظ عملکرد پیدا نکنند.
اگرچه شکل جدید تابع IIF به قدری به محبوبیت رسید که پایش به محیط کدنویسی نیز باز شده و در کنار تابع IF مورد استفاده قرار میگیرد.