توابع فرار (Volatile Function)
توابع فرار توابعی هستند که با هربار تجدید محاسبه فایل این توابع مجددا محاسبه می شود درواقع این محاسبه ارتباطی به تغییر داده ها و یا تغییر فرمول ندارد، لذا می بایست تا حد امکان از بکارگیری این توابع خود داری نمایید. کاربرد بیش از حد این توابع به طور محسوسی در هر بار تجدید محاسبه سرعت فایل را کاهش داده و منجر به هنگ شدن فایل می گردد.
توابع زیر که به صورت واضح جزو توابع فرار محسوب می گردند:
برخلاف تصور توابع زیر نیز جزو این توابع محسوب می گردد:کد HTML:RAND(), NOW(), TODAY()
برخی توابع در برخی ورژن ها فرار محسوب می شوند به عنوان مثال تابع INDEX() در اکسل 97 فرار محسوب نمی گردد.کد 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)
در صورت استفاده از یک تابع فرار در یک فرمول تابع حاصل فرار محسوب می شود حتی اگر تابع استفاده شده در مجموعه فرمول مورد محاسبه واقع نشود.
به عنوان مثال فرمولهمواره 99 را بازمیگرداند و تابعکد HTML:=IF(1<2,99,NOW())مورد محاسبه واقع نمی شود با این حال یک تابع فرار محسوب می شود.کد HTML:NOW()
حالت دیگری نیز وجود دارد که فرض کنید در سلول A1 تابعرا بنویسید و از فرمولکد HTML:Now()استفاده کنید در این صورت این تابع خاصیت توابع فرار را نخواهد داشت.کد HTML:=IF(1<2,99,A1)
![]()
اخطار: این یک موضوع قدیمی است
به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
علاقه مندی ها (Bookmarks)