ویژگی تصویر

تابع ROW در اکسل — معرفی و کاربردهای عملی

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

تابع ROW یکی از توابع ساده اما بسیار کاربردی در اکسل است که عدد ردیف یک سلول یا مرجع را برمی‌گرداند. اگرچه ساز و کار آن ساده به نظر می‌رسد، اما در ترکیب با توابع دیگر یا در فرمول‌های آرایه‌ای می‌تواند نقش مهمی در ایجاد اندیس‌ها، فیلترهای پویا و محاسبات شرطی ایفا کند.

قواعد پایه‌ای تابع ROW

  • ساختار: ROW([reference])
  • اگر مرجع حذف شود: تابع عدد ردیف سلولی که فرمول در آن قرار دارد را برمی‌گرداند.
  • اگر مرجع یک تک‌سلولی باشد: شماره ردیف آن سلول برگشت داده می‌شود.
  • اگر مرجع چندردیفه باشد: در حالت عادی شماره اولین ردیف مرجع برگردانده می‌شود، مگر این که در قالب آرایه استفاده شود که در آن صورت می‌تواند آرایه‌ای از شماره ردیف‌ها تولید کند.

مثال‌های ساده

فرمولنتیجه
=ROW()شماره ردیف سلول حاوی فرمول
=ROW(A5)5
=ROW(1:1)1 (شماره اولین ردیف مرجع)

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

در ادامه چند سناریوی واقعی که تابع ROW در آن‌ها کاربردی است را بررسی می‌کنیم.

1) تولید شماره ردیف نسبی (Indexing)

وقتی داده‌ها از ردیف شروع مشخصی نیستند یا می‌خواهید شماره‌دهی از یک عدد دلخواه آغاز شود، از ترکیب ROW و تفاضل استفاده می‌شود:

=ROW()-ROW($A$2)+1

این فرمول برای سلولی که در ردیف 2 قرار دارد مقدار 1، در ردیف 3 مقدار 2 و … را تولید می‌کند. مفید برای ایجاد ستون شماره‌گذاری زمانی که جدول شما در وسط شیت قرار دارد.

2) ساخت آرایه از شماره ردیف‌ها (قبل از SEQUENCE)

در نسخه‌های قدیمی که SEQUENCE موجود نبود، از ترکیب INDIRECT و ROW برای ایجاد آرایه شماره‌ها استفاده می‌شد:

=ROW(INDIRECT("1:10"))

این فرمول آرایه‌ای از اعداد 1 تا 10 تولید می‌کند. توجه داشته باشید که INDIRECT تابعی volatile است و ممکن است سرعت فایل را کاهش دهد؛ در نسخه‌های جدیدتر از SEQUENCE استفاده کنید.

3) انتخاب هر nاُمین سطر (مثال با SUMPRODUCT)

فرض کنید می‌خواهید مجموع مقادیر ستون B را برای هر سومین ردیف محاسبه کنید:

=SUMPRODUCT((MOD(ROW($A$1:$A$100)-ROW($A$1),3)=0)*($B$1:$B$100))

در این فرمول با MOD مشخص می‌کنیم کدام ردیف‌ها با فاصله 3 انتخاب شوند و سپس با SUMPRODUCT مقادیر متناظر در ستون B جمع می‌شود.

4) استفاده در فرمول‌های آرایه‌ای پویا

در Excel جدید (با آرایه‌های پویا) می‌توانید ROW را روی یک محدوده چندسلولی بنویسید و خروجی به صورت خودکار به چند سلول پخش می‌شود:

=ROW(A1:A5)

این فرمول یک ستون شامل اعداد 1 تا 5 برمی‌گرداند (در صورتی که فرمول به شکل آرایه پخش شود). این رفتار برای ساخت اندیس یا ترکیب با FILTER و INDEX بسیار مفید است.

5) ساخت فهرست‌های مرتب یا رتبه‌بندی پویا با INDEX/MATCH

در ترکیب با INDEX می‌توان از ROW به عنوان اندیس استفاده کرد تا ردیف‌های مرتب یا جابه‌جا شده را استخراج کنیم. برای مثال برای گرفتن nامین مقدار از یک مجموعه می‌توان از ROW به عنوان اندیس در فرمول‌های آرایه‌ای استفاده کرد.

نکات و نکات حرفه‌ای (Expert Tips)

  • تفاوت ROW و ROWS: ROW فقط شماره ردیف را می‌دهد، ولی ROWS تعداد ردیف‌های یک مرجع را برمی‌گرداند (مثلاً ROWS(A1:A5)=5).
  • اگر مرجع شامل چند ستون باشد، ROW مرجع اولین ردیف را بازمی‌گرداند؛ برای دریافت آرایه ردیف‌ها باید از آن در زمینه آرایه‌ای استفاده کنید.
  • از توابع volatile (مانند INDIRECT) پرهیز کنید اگر فایل بزرگ است. جایگزین‌های غیرvolatile مثل INDEX و SEQUENCE در نسخه‌های جدید بهتر و سریع‌ترند.
  • برای محاسبه اندیس نسبی در جداول ساختاری (Table) می‌توان از ROW در ترکیب با INDEX یا استفاده از توابع ساختاری جدول بهره برد، اما توجه کنید که ارجاع ساختاری گاهی باعث برگشت نتایج پیچیده می‌شود.

مثال ترکیبی: استخراج nامین مقدار غیرخالی

برای مثال می‌خواهیم سومین مقدار غیرخالی از ستون A را بیابیم. یک الگوی متداول به شکل زیر است:

=INDEX($A$1:$A$100, SMALL(IF($A$1:$A$100"", ROW($A$1:$A$100)-ROW($A$1)+1), 3))

توضیح: بخش IF آرایه‌ای از اندیس‌های محلی (relative indices) برای سلول‌های غیرخالی می‌سازد، SMALL سومین مقدار کوچک را انتخاب می‌کند و INDEX مقدار متناظر را برمی‌گرداند. در نسخه‌های قدیمی باید فرمول به صورت Ctrl+Shift+Enter وارد شود؛ در نسخه‌های جدید آرایه‌ها به‌طور خودکار مدیریت می‌شوند.

مثال کدنویسی VBA

Sub ShowRow()
    Dim r As Long
    r = Range("B5").Row
    MsgBox "Row number of B5 is " & r
End Sub

این ماکرو شماره ردیف سلول B5 را با استفاده از خصوصیت .Row در VBA می‌خواند و در یک پیام نمایش می‌دهد. در VBA برخلاف تابع اکسل، Row یک خصوصیت شیء Range است و مقدار عددی آن را برمی‌گرداند.

جمع‌بندی و انتخاب بهترین روش

تابع ROW بسیار ساده و در عین حال انعطاف‌پذیر است. برای کاربردهای روزمره (شماره‌گذاری، استخراج اندیس نسبی) مناسب است. در شرایطی که نیاز به آرایه‌های پویا دارید، از امکانات جدید (مثل SEQUENCE و توابع آرایه‌ای) استفاده کنید تا از استفاده از توابع volatile اجتناب شود. هنگامی که عملکرد و سرعت مهم است، راه‌حل‌هایی مبتنی بر INDEX و SEQUENCE توصیه می‌شود.

در نهایت، آشنایی با نحوه ترکیب ROW با توابعی مانند INDEX، MATCH، SMALL، SUMPRODUCT و FILTER به شما امکان می‌دهد مسائل پیچیده‌تری مانند فیلترهای شرطی، استخراج nامین مقدار و جمع شرطی هر nاُمین سطر را به سادگی حل کنید.

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

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