تابع HSTACK در اکسل
تابع HSTACK یکی از توابع جدید آرایهای در Excel (مخصوص Microsoft 365 و Excel نسخههای جدید) است که امکان ترکیب افقی چند آرایه یا محدوده را فراهم میکند. به عبارت دیگر، HSTACK ستونها یا آرایهها را در جهت افقی (ستونی کنار ستون دیگر) به هم میچسباند و یک آرایه خروجی واحد تولید میکند. این تابع برای ایجاد گزارشهای ترکیبی، آمادهسازی دادهها برای تحلیل و ادغام سریع ستونها بسیار مفید است.
چه زمانی از HSTACK استفاده کنیم؟
- وقتی بخواهید چند ستون مختلف را به سرعت کنار هم قرار دهید.
- ترکیب خروجی چند فرمول یا چند جدول به صورت یک آرایه برای تغذیه توابع دیگر (مانند FILTER، SORT).
- ایجاد جدول موقتی بدون تغییر دادههای اصلی.
قواعد و سازگاری
تابع HSTACK تنها در نسخههای جدید Excel که از Dynamic Arrays پشتیبانی میکنند در دسترس است (Microsoft 365، Excel Online جدید و نسخههای بهروز شده). آرایههایی که وارد HSTACK میشوند معمولاً باید تعداد سطر یکسانی داشته باشند تا خروجی منظم تولید شود؛ در غیر این صورت باید از روشهای تکمیلی (پدینگ یا ایندکس پویا) استفاده کنید.
ساختار تابع (Syntax)
ساختار کلی:
=HSTACK(array1, [array2], ...)در این ساختار میتوانید دو یا چند آرایه یا محدوده را وارد کنید. آرایهها بهصورت افقی به هم چسبانده میشوند.
مثالهای ساده
مثال 1: چسباندن دو ستون کنار هم
=HSTACK(A2:A6, B2:B6)این فرمول ستون A2:A6 و B2:B6 را بهصورت افقی کنار هم قرار میدهد و یک آرایه خروجی با دو ستون تولید میکند. مناسب زمانی است که هر دو محدوده تعداد سطر یکسان داشته باشند.
مثال 2: اضافه کردن هدر سفارشی و سپس ستونها
=HSTACK({"Name","Score"}, A2:A6, B2:B6)در اینجا از یک آرایه ثابت برای هدر استفاده شده است. دقت کنید که آرایههای ثابت باید سازگار با جهت قرارگیری دادهها باشند؛ اگر هدر شما یک سطر است و دادهها چند سطر، معمولاً از روشهای دیگر برای قرار دادن هدر بهصورت ردیف بالایی استفاده میشود (مثل VSTACK برای قرار دادن ردیف هدر بالای آرایه).
کار با آرایههایی که طول متفاوت دارند
اگر دو ستون شما طولهای متفاوتی داشته باشند، HSTACK بهتنهایی خطا میدهد یا خروجی ناخواسته تولید میکند. راهکار این است که با استفاده از توابعی مثل LET، SEQUENCE و INDEX یک آرایه با طول حداکثر بسازید و برای سطرهای خالی مقدار جایگزین مشخص کنید.
=LET(
r1, A2:A6,
r2, B2:B8,
n, MAX(ROWS(r1), ROWS(r2)),
i, SEQUENCE(n),
HSTACK(
IF(i<=ROWS(r1), INDEX(r1,i),""),
IF(i<=ROWS(r2), INDEX(r2,i),"")
)
)توضیح: در این فرمول با LET ابتدا دو محدوده r1 و r2 تعریف شدهاند. سپس n برابر بیشترین تعداد سطر بین آنها تعیین میشود. با SEQUENCE یک بردار اندیس از 1 تا n ساخته میشود و با INDEX و شرط IF مقادیر هر محدوده طبق آن اندیس خوانده میشوند؛ اگر اندیس از طول یکی از محدودهها بیشتر باشد، مقدار خالی (“”) گذاشته میشود. در نهایت HSTACK دو ستون «همطولشده» را کنار هم قرار میدهد.
نمونه کاربردی: فیلتر کردن و سپس چسباندن
فرض کنید جدول فروش دارید و میخواهید ستون نام مشتریان و مبلغ تراکنشهای با وضعیت “Confirmed” را کنار هم نمایش دهید:
=HSTACK(
FILTER(CustomerName, Status="Confirmed"),
FILTER(Amount, Status="Confirmed")
)توضیح: در این مثال ابتدا برای هر ستون از FILTER استفاده شده تا فقط سطرهای تأییدشده انتخاب شوند. سپس HSTACK آنها را کنار هم قرار میدهد. این روش زمانی قدرتمند است که میخواهید نتایج فیلترشده را بلافاصله به صورت جدول خروجی ببینید.
مثال جدول قبل/بعد
| محدوده اولیه | ستون1 | ستون2 | نتیجه HSTACK |
|---|---|---|---|
| قبل | A2:A4 | B2:B4 | ستونA | ستونB (به صورت یک آرایه خروجی) |
نکات پیشرفته و توصیههای کارشناسی
- HSTACK با توابع آرایهای دیگر ترکیب میشود: از جمله FILTER، SORT، UNIQUE و INDEX که امکان ایجاد خروجیهای پیچیده و داینامیک را فراهم میکند.
- برای گزارشدهی مقیاسپذیر، از LET برای خوانایی و کارایی بهتر فرمولها استفاده کنید.
- در صورت نبود HSTACK در نسخه شما، از Power Query یا راهکارهای سنتی (کپی/پیست یا CONCAT/INDEX) استفاده نمایید؛ اما Power Query اغلب گزینه قویتر برای یکبارسازی و اتوماسیون است.
- حجم بزرگ داده: در جداول بسیار بزرگ، توابع آرایهای ممکن است مصرف حافظه و زمان محاسبات را افزایش دهند؛ اگر عملکرد پایین بود، تبدیل عملیات به Power Query یا جداول کمکی توصیه میشود.
جمعبندی
تابع HSTACK ابزاری ساده اما بسیار کارآمد برای ترکیب افقی آرایهها در Excel است. با یادگیری ترکیب آن با توابعی مثل LET، SEQUENCE، INDEX و FILTER میتوانید تبدیل به یک کاربر حرفهای در پردازش دادههای پویا شوید. مهم است که نسخه Excel خود را بررسی کنید و در صورت نیاز از راهحلهای جایگزین مانند Power Query برای اعمال بر روی دادههای بزرگ یا در نسخههای قدیمیتر استفاده نمایید.
آیا این مطلب برای شما مفید بود ؟




