ویژگی تصویر

تابع CHOOSECOLS در اکسل — معرفی و کاربردهای حرفه‌ای

  /  اکسل   /  تابع CHOOSECOLS در اکسل
بنر تبلیغاتی الف

تابع CHOOSECOLS یکی از توابع جدید اکسل (Microsoft 365 / Excel 2021 به بعد) است که برای انتخاب ستون‌های مشخص از یک آرایه یا بازه استفاده می‌شود. این تابع با ساختار صفحات کاری مدرن و خروجی‌های آرایه‌ای (dynamic arrays) سازگار است و جایگزین ساده و خوانایی برای روش‌های پیچیده‌تر قبلی می‌باشد.

سینتکس و توضیح مختصر

سینتکس پایه:

CHOOSECOLS(array, col_num1, [col_num2], ...)

توضیح: آرگومان اول آرایه یا محدوده است؛ بقیه آرگومان‌ها شماره ستون‌ها (بر حسب موقعیت در آرایه) هستند. می‌توان از آرایه‌ای از اندیس‌ها (مثلاً با استفاده از SEQUENCE یا یک آرایه ثابت) نیز استفاده کرد.

مثال‌های پایه

  • انتخاب یک ستون: CHOOSECOLS(A1:D10, 2) — ستون دوم را بازمی‌گرداند.
  • انتخاب چند ستون: CHOOSECOLS(A1:D10, {1,3}) — ستون‌های اول و سوم را برمی‌گرداند.
  • انتخاب ستون‌های پیوسته با SEQUENCE:
    CHOOSECOLS(A1:F10, SEQUENCE(1,3,2))

    در این مثال ستون‌های 2 تا 4 انتخاب می‌شوند (SEQUENCE(1,3,2) آرایه [2,3,4] تولید می‌کند).

مثال عملی: فیلتر و انتخاب ستون‌ها

=CHOOSECOLS(
  FILTER(A1:E100, E1:E100="Yes"),
  {1,3}
)

در این مثال ابتدا ردیف‌هایی که در ستون E مقدار “Yes” دارند فیلتر می‌شوند، سپس فقط ستون‌های اول و سوم از نتیجه فیلتر انتخاب می‌شوند. نتیجه یک آرایه‌ی خروجی است که به‌طور خودکار در سلول‌های مجاور پخش (spill) می‌شود.

بازآرایی ستون‌ها و استفاده با جداول (Tables)

یکی از کاربردهای مفید CHOOSECOLS بازآرایی، حذف یا تعیین ترتیب ستون‌های یک جدول است:

=CHOOSECOLS(Table1[#All], 3, 1, 2)

این فرمول ستون سوم جدول را ابتدا و سپس ستون‌های اول و دوم را برمی‌گرداند؛ مناسب برای گزارشگیری سریع بدون تغییر ساختار جدول اصلی.

انتخاب ستون‌های انتهایی (Last N Columns)

برای انتخاب ستون آخر یا چند ستون آخر می‌توان از تابع COLUMNS همراه با SEQUENCE استفاده کرد:

=CHOOSECOLS(A1:Z100, SEQUENCE(1,3, COLUMNS(A1:Z100)-3+1))

در این مثال سه ستون آخر از بازه A1:Z100 برگشت داده می‌شوند. ایده اصلی محاسبهٔ اندیس شروع با COLUMNS است.

پیدا کردن اندیس ستون‌ها به‌صورت پویا (با MATCH)

اگر می‌خواهید بر اساس نام هدرها ستون‌ها را انتخاب کنید (تا با جابجایی ستون‌ها فرمول خراب نشود)، از MATCH استفاده کنید:

=CHOOSECOLS(
  Table1,
  MATCH({"Name","Email"}, Table1[#Headers], 0)
)

در این فرمول MATCH اندیس ستون‌هایی که نام هدرهای “Name” و “Email” را دارند برمی‌گرداند و CHOOSECOLS همان ستون‌ها را انتخاب می‌کند. روش بسیار کاربردی برای داشبوردها و گزارش‌های پویاست.

جایگزین‌ها و سازگاری با نسخه‌های قدیمی‌تر

تابع CHOOSECOLS در نسخه‌های قدیمی اکسل وجود ندارد. چند جایگزین:

  • INDEX برای انتخاب ستون مشخص:
    =INDEX(A1:D10, 0, 2)

    این فرمول ستون دوم را برمی‌گرداند. در برخی پیاده‌سازی‌ها برای چند ستون می‌توان از آرایه اندیس‌ها استفاده کرد: INDEX(A1:D10, 0, {1,3}).

  • ترکیب‌های پیچیده‌تر با CHOOSE و TRANSPOSE در نسخه‌های قدیمی برای شبیه‌سازی رفتار CHOOSECOLS.

نکات عملکردی و بهترین شیوه‌ها

  • CHOOSECOLS تابعی غیرنوسان (non-volatile) است و معمولاً عملکرد بهتری نسبت به توابع جایگزین پیچیده دارد.
  • همیشه در استفاده از اندیس‌ها مراقب باشید: CHOOSECOLS بر اساس موقعیت ستون در آرایه عمل می‌کند، نه نام ستون؛ پس استفاده از MATCH برای پایداری توصیه می‌شود.
  • برای مجموعه داده‌های بسیار بزرگ، ترکیب CHOOSECOLS با توابعی مانند FILTER یا SORT می‌تواند محاسبات را بهینه و خوانایی فرموله‌ها را افزایش دهد.
  • در گزارش‌هایی که باید برای کاربران با نسخه‌های قدیمی‌تر نیز کار کند، بهتر است معادل INDEX یا راه‌حل پشتیبان قرار دهید یا در مستندات قید کنید که فایل برای Microsoft 365 است.

نمونه داده و نمایش قبل/بعد

StudentGradeEmailPassed
Ali90ali@mail.comYes
Zahra78zahra@mail.comNo
Reza85reza@mail.comYes

اگر بخواهیم فقط نام و ایمیل دانش‌آموزانی که Passed = “Yes” هستند استخراج کنیم:

=CHOOSECOLS(
  FILTER(A1:D4, D2:D4="Yes"),
  {1,3}
)

نتیجه آرایه‌ای شامل ستون‌های Student و Email برای ردیف‌هایی که Passed = “Yes” است.

نتیجه‌گیری

تابع CHOOSECOLS ابزار بسیار قدرتمندی برای کار با آرایه‌ها و جداول در اکسل مدرن است. با ترکیب آن با توابعی مانند FILTER، MATCH و SEQUENCE می‌توانید فرمول‌های خواناتر، منعطف‌تر و سریع‌تری بسازید. در پروژه‌های واقعی این تابع وقت زیادی صرفه‌جویی می‌کند و نگهداری فایل‌ها را ساده‌تر می‌سازد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: