توابع فرار (Volatile Function)
توابع فرار توابعی هستند که با هربار تجدید محاسبه فایل این توابع مجددا محاسبه می شود درواقع این محاسبه ارتباطی به تغییر داده ها و یا تغییر فرمول ندارد، لذا می بایست تا حد امکان از بکارگیری این توابع خود داری نمایید. کاربرد بیش از حد این توابع به طور محسوسی در هر بار تجدید محاسبه سرعت فایل را کاهش داده و منجر به هنگ شدن فایل می گردد.
توابع زیر که به صورت واضح جزو توابع فرار محسوب می گردند:
کد HTML:
RAND(), NOW(), TODAY()
کد HTML:
OFFSET(), CELL(), INDIRECT(), INFO()
دسته ای از توابع توسط مایکروسافت به عنوان توابع فرار معرفی شده اند که در صورت تست کردن به عنوان تابع فرار شناسایی نمی شوند:
کد HTML:
INDEX(), ROWS(), COLUMNS(), AREAS()
کد HTML:
CELL("Filename")
برخی توابع براساس نوع استفاده می توانند فرار باشند از ورژن 2002 به بعد تابع sumif چنین حالتی دارد ، این تابع زمانی که محدوده آرگومان اول برابر با محدوده آرگومان سوم نباشد یک تابع فرار است به عنوان مثال
کد HTML:
=SUMIF(A1:A4,">0",B1)
کد HTML:
=SUMIF(A1:A4,">0",B1:B4)
در صورت استفاده از یک تابع فرار در یک فرمول تابع حاصل فرار محسوب می شود حتی اگر تابع استفاده شده در مجموعه فرمول مورد محاسبه واقع نشود.
به عنوان مثال فرمول
کد HTML:
=IF(1<2,99,NOW())
کد HTML:
NOW()
حالت دیگری نیز وجود دارد که فرض کنید در سلول A1 تابع
کد HTML:
Now()
کد HTML:
=IF(1<2,99,A1)
کامنت