فصل ۸: خودکارسازی و پروژه‌ی پایانی

کلینیک مشکلات رایج: فایل کند، لینک شکسته، #SPILL!، تاریخ متنی و CSV فارسی

کلینیک: پنج مشکلی که هر هفته پیش می‌آید

این درس به شکل «علامت، علت، درمان» نوشته شده تا هنگام مواجهه با مشکل سریع پیدایش کنید.

۱. فایل کند و حجیم

علامت: فایلی با چند هزار سطر ۳۰ مگابایت است و هر تغییر چند ثانیه «Calculating» نشان می‌دهد.

علتتشخیصدرمان
محدوده‌ی استفاده‌شده باد کردهCtrl+End به سطری دور از داده می‌رودسطرها و ستون‌های بعد از داده را Delete (نه Clear) کنید و ذخیره
توابع VolatileOFFSET، INDIRECT، TODAY، RAND با هر تغییر حساب می‌شوندINDEX به‌جای OFFSET، ارجاع مستقیم به‌جای INDIRECT
ارجاع کل ستون در فرمول آرایه‌ایSUMPRODUCT((A:A="x")*B:B)ارجاع جدول (Structured Reference)
Conditional Formatting تکه‌تکهManage Rules صدها قانون تکراریحذف همه و یک قانون روی کل جدول
نام‌های سرگردان از کپی شیتName Manager پر از #REF!فیلتر Names with Errors و حذف
فرمت فایلxlsx بزرگSave As ← Excel Binary Workbook (.xlsb)

۲. External Links شکسته

علامت: هنگام باز شدن پیام «This workbook contains links to one or more external sources». درمان: Data ← Edit Links (در 365: Workbook Links) ← Change Source به فایل جدید، یا Break Link تا فرمول‌ها مقدار شوند. اگر پس از Break Link باز هم پیام آمد، لینک جایی غیر از سلول پنهان است: Name Manager، منبع Data Validation، قوانین Conditional Formatting، سری نمودارها و دکمه‌های متصل به ماکروی فایل دیگر. Ctrl+F با عبارت .xls، Within: Workbook و Look in: Formulas بیشترشان را پیدا می‌کند.

۳. ‎#SPILL!

علت‌های اصلی را در فصل ۴ دیدیم (سلول پر، ادغام، داخل جدول). دو مورد کمتر شناخته‌شده: Spill range is unknown وقتی اندازه‌ی خروجی به تابع Volatile وابسته است (مثلاً SEQUENCE(RANDBETWEEN(1,10)))، و Spill range too big برای ارجاع کل ستون. اگر فایل در Excel 2019 باز شود، فرمول پویا به آرایه‌ی قدیمی {=...} با اندازه‌ی ثابت تبدیل می‌شود و با تغییر داده بزرگ نمی‌شود.

۴. تاریخ متنی

علامت: تاریخ‌ها چپ‌چین‌اند، Pivot آن‌ها را گروه نمی‌کند و =ISNUMBER(A2) مقدار FALSE می‌دهد. علت رایج: CSV با قالب dd/mm/yyyy روی ویندوزی با تنظیم mm/dd/yyyy. خطرناک این‌که 05/03/2025 بی‌صدا به ۳ مه تبدیل می‌شود و فقط 25/03/2025 متن می‌ماند؛ یعنی بخشی از داده بدون هیچ هشداری غلط است.

درمان سریع: ستون را انتخاب ← Data ← Text to Columns ← Next ← Next ← Date: DMY ← Finish

با فرمول (متن dd/mm/yyyy):
=DATE(RIGHT(A2,4), MID(A2,4,2), LEFT(A2,2))

تاریخ شمسی متنی (جدول تقویم فصل ۱):
=XLOOKUP(A2, Cal[Shamsi], Cal[Miladi])

Power Query: Change Type ← Using Locale ← Date، English (United Kingdom)

۵. CSV فارسی به‌هم‌ریخته

علامت: دابل‌کلیک روی CSV به‌جای «فرش کاشان» نویسه‌هایی مثل «Ùرش» نشان می‌دهد. علت: اکسل CSV بدون BOM را با Code Page پیش‌فرض ویندوز (ANSI) باز می‌کند، در حالی که فایل UTF-8 است. فایل خراب نیست، فقط اشتباه خوانده شده؛ هرگز آن را در همین حالت ذخیره نکنید.

  1. Data ← Get Data ← From Text/CSV ← انتخاب فایل.
  2. File Origin را 65001: Unicode (UTF-8) بگذارید؛ برای خروجی نرم‌افزارهای قدیمی ایرانی 1256: Arabic (Windows) را امتحان کنید.
  3. Delimiter را بررسی و Transform Data را برای اصلاح ی و ک و نوع داده بزنید.

برای خروجی دادن به سامانه‌ی دیگر: Save As ← CSV UTF-8 (Comma delimited). گزینه‌ی ساده‌ی «CSV (Comma delimited)» با ANSI ذخیره می‌کند و حروف فارسی به «?» تبدیل می‌شوند.

نکته‌هایی که کمتر کسی می‌داند

  • Review ← Check Performance در Excel 365 قالب‌بندی سلول‌های خالیِ بی‌استفاده را پیدا و پاک می‌کند؛ پیش از Delete دستی امتحانش کنید.
  • Name Manager نام‌های مخفی را نشان نمی‌دهد؛ اگر لینک خارجی از هیچ‌جا پیدا نشد، Inspect Document ← Hidden Names یا یک خط VBA (n.Visible = True روی همه‌ی نام‌ها) آن را آشکار می‌کند.
  • CSV با BOM (که اکسل در حالت CSV UTF-8 می‌نویسد) را بعضی اسکریپت‌ها نمی‌پذیرند و نام ستون اول را با یک کاراکتر نامرئی (U+FEFF) می‌خوانند؛ اگر ستون اول در سامانه‌ی مقصد «پیدا نمی‌شود»، علت همین است.
  • برای پیدا کردن کندترین شیت، Calculation را Manual کنید و روی هر شیت Shift+F9 (محاسبه‌ی فقط همان شیت) بزنید و زمان بگیرید.
  • فایلی که باز نمی‌شود را با File ← Open ← فلش کنار Open ← Open and Repair باز کنید؛ گزینه‌ی Extract Data دست‌کم مقادیر و فرمول‌ها را نجات می‌دهد.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.