فهرست مطالب
روشی آسان برای تبدیل یک آرایه یا محدوده به یک ستون با تابع TOCOL.
قابلیت انتقال داده ها از ستون ها به ردیف ها و برعکس در اکسل برای مدت زیادی وجود داشته است. مدتی اما تبدیل طیف وسیعی از سلولها به یک ستون، کار دشواری بود. حالا، بالاخره در حال تغییر است. مایکروسافت یک تابع جدید به نام TOCOL معرفی کرده است که می تواند تبدیل آرایه به ستون را در یک چشمک انجام دهد. در زیر لیستی از کارهایی است که این تابع جدید می تواند به راحتی آنها را حل کند.
عملکرد Excel TOCOL
عملکرد TOCOL در اکسل یک آرایه یا محدوده ای از سلول ها را به یک واحد تبدیل می کند. ستون.
این تابع سه آرگومان می گیرد، اما فقط اولین آرگومان مورد نیاز است.
TOCOL(آرایه، [نادیده گرفتن]، [اسکن_بر_ستون])کجا:
آرایه (الزامی) - آرایه یا محدوده ای برای تبدیل به یک ستون.
نادیده گرفتن (اختیاری) - تعیین می کند که آیا نقاط خالی یا/و خطاها نادیده گرفته شوند. می تواند یکی از این مقادیر باشد:
- 0 یا حذف شده (پیش فرض) - حفظ همه مقادیر
- 1 - نادیده گرفتن نقاط خالی
- 2 - نادیده گرفتن خطاها
- 3 - نادیده گرفتن نقاط خالی و خطاها
Scan_by_column (اختیاری) - تعیین می کند که آیا آرایه به صورت افقی یا عمودی اسکن شود:
- FALSE یا حذف شده (پیشفرض) - آرایه را با ردیف از چپ به راست اسکن کنید.
- درست - آرایه را بر اساس ستون از بالا به پایین اسکن کنید.
نکات:
- برای تبدیل یک آرایه به یک ردیف، از TOROW استفاده کنیدتابع.
- برای انجام تبدیل ستون به آرایه مخالف، از تابع WRAPCOLS برای بسته بندی بر اساس ستون یا تابع WRAPROWS برای بسته بندی به ردیف استفاده کنید.
- برای انتقال یک آرایه از افقی به عمودی یا برعکس، یعنی ردیف ها را به ستون ها تغییر دهید، از تابع TRANSPOSE استفاده کنید.
در دسترس بودن TOCOL
TOCOL یک تابع جدید است که در Excel برای Microsoft 365 (برای ویندوز) پشتیبانی می شود. و مک) و اکسل برای وب.
فرمول پایه TOCOL برای تبدیل محدوده به ستون
فرمول TOCOL در ساده ترین شکل خود فقط به یک آرگومان نیاز دارد - آرایه به عنوان مثال، برای قرار دادن یک آرایه دو بعدی متشکل از 3 ستون و 4 ردیف در یک ستون، فرمول این است:
=TOCOL(A2:C5)
فرمول فقط در یک سلول وارد می شود (E2 در این مثال) و به طور خودکار به سلول های زیر می ریزد. از نظر اکسل، نتیجه را محدوده ریزش می نامند.
این فرمول چگونه کار می کند:
از نظر فنی، محدوده A2:C5 ابتدا به یک آرایه دو بعدی تبدیل می شود. لطفاً به سطرهای جدا شده با نقطه ویرگول و ستون های مشخص شده با کاما توجه کنید:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
تابع TOCOL آرایه را از چپ به راست اسکن می کند و آن را به یک آرایه عمودی یک بعدی تبدیل می کند:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
نتیجه در سلول E2 قرار می گیرد، که از آن به سلول های زیر می ریزد.
نحوه استفاده از تابع TOCOL در اکسل - مثال های فرمول
برای به دست آوردن درک بیشتر ازامکانات تابع TOCOL و وظایفی که می تواند پوشش دهد، بیایید به چند مثال فرمول نگاهی بیندازیم.
تبدیل آرایه به ستون با نادیده گرفتن نقاط خالی و خطاها
همانطور که ممکن است در مثال قبلی متوجه شده باشید فرمول پیشفرض TOCOL تمام مقادیر آرایه مبدأ، از جمله سلولهای خالی و خطاها را نگه میدارد.
در آرایهای که به دست میآید، سلولهای خالی با صفر نشان داده میشوند، که ممکن است کاملاً گیجکننده باشد، به خصوص اگر آرایه اصلی دارای 0 مقدار راه حل این است که پرش از جاهای خالی . برای این کار، آرگومان دوم را روی 1 تنظیم کنید:
=TOCOL(A2:C5, 1)
برای نادیده گرفتن خطاها ، آرگومان دوم را روی 2 قرار دهید:
=TOCOL(A2:C5, 2)
برای حذف هر دو، جای خالی و خطا ، از 3 برای آرگومان نادیده گرفتن استفاده کنید:
=TOCOL(A2:C5, 3)
آرایه را به صورت افقی یا عمودی اسکن کنید
با آرگومان پیشفرض scan_by_column (FALSE یا حذف شده)، تابع TOCOL آرایه را بهصورت افقی بر اساس ردیف اسکن میکند. برای پردازش مقادیر بر اساس ستون، این آرگومان را روی TRUE یا 1 قرار دهید. به عنوان مثال:
=TOCOL(A2:C5, ,TRUE)
توجه کنید که، در هر دو مورد، آرایه های برگشتی یک اندازه هستند، اما مقادیر مرتب شده اند. به ترتیبی متفاوت
ترکیب چندین محدوده در یک ستون
اگر با چندین محدوده غیر پیوسته سر و کار دارید، ابتدا می توانید با کمک تابع VSTACK محدوده ها را به صورت عمودی در یک آرایه واحد ترکیب کنید. سپس از TOCOL برای تبدیل آرایه ترکیبی به یک ستون استفاده کنید.
با فرض اینکه محدوده اول A2:C4 و محدوده دوم A8:C9 باشد، فرمول به این شکل است:
=TOCOL(VSTACK(A2:C4, A8:C9))
این فرمول رفتار پیش فرض را نشان می دهد - آرایه های ترکیبی را به صورت افقی از سمت چپ می خواند. به سمت راست همانطور که در ستون E در تصویر زیر نشان داده شده است.
برای خواندن مقادیر به صورت عمودی از بالا به پایین، آرگومان سوم TOCOL را روی TRUE قرار می دهید:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
لطفا توجه داشته باشید که در این حالت، فرمول ابتدا مقادیری را از ستون A هر دو آرایه، سپس از ستون B و غیره برمی گرداند. دلیل آن این است که TOCOL یک آرایه انباشته شده را اسکن می کند، نه محدوده های فردی اصلی را.
اگر منطق کسب و کار شما مستلزم چیدن محدوده های اصلی به صورت افقی و نه عمودی است، از تابع HSTACK به جای VSTACK استفاده کنید.
برای الحاق هر آرایه بعدی به سمت راست آرایه قبلی و خواندن عبارت آرایه های ترکیب شده به صورت افقی، فرمول این است:
=TOCOL(HSTACK(A2:C4, A8:C10))
برای افزودن هر آرایه بعدی به سمت راست آرایه قبلی و اسکن آرایه های ترکیبی به صورت عمودی، فرمول به صورت زیر است:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
استخراج مقادیر منحصر به فرد از یک محدوده چند ستونی
تابع Excel UNIQUE می تواند به راحتی موارد منحصر به فرد را در یک ستون یا سطر پیدا کند و همچنین ردیف های منحصر به فرد را برگرداند، اما نمی تواند مقادیر منحصر به فرد را از آن استخراج کند. یک آرایه چند ستونی راه حل این است که از آن همراه با تابع TOCOL استفاده کنید.
برای مثال، برای استخراج تمام مقادیر مختلف (متمایز) از محدودهA2:C7، فرمول این است:
=UNIQUE(TOCOL(A2:C7))
علاوه بر این، می توانید فرمول بالا را در تابع SORT بپیچید تا آرایه برگشتی را به ترتیب حروف الفبا مرتب کنید:
=SORT(UNIQUE(TOCOL(A2:C7)))
نحوه تبدیل محدوده به ستون در اکسل 365 - 2010
در نسخه های اکسل که تابع TOCOL پشتیبانی نمی شود، چند روش جایگزین برای تبدیل محدوده ای از سلول ها به ستون وجود دارد. این راه حل ها بسیار مشکل هستند، اما به هر حال کار می کنند.
برای خواندن محدوده به ردیف:
INDEX( range , QUOTIENT(ROW(A1)-1, COLUMNS( محدوده ))+1، MOD(ROW(A1)-1، COLUMNS( محدوده ))+1)برای خواندن محدوده بر اساس ستون:
INDEX( محدوده ، MOD(ROW(A1)-1، ROWS( محدوده ))+1، QUOTIENT(ROW(A1)-1، ROWS( محدوده ))+1 )برای مجموعه داده نمونه ما، فرمول ها به شرح زیر است:
برای اسکن محدوده افقی از چپ به راست :
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
این فرمول معادل تابع TOCOL است که آرگومان سوم روی FALSE تنظیم شده یا حذف شده است:
=TOCOL(A2:C5)
برای اسکن محدوده عمودی از بالا به پایین :
=INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)
این فرمول با تابع TOCOL قابل مقایسه با آرگومان سوم روی TRUE است:
=TOCOL(A2:C5, ,TRUE)
برخلاف TOCOL، فرمول های جایگزین باید در هر کدام وارد شوند. سلولی که می خواهید نتایج در آن نمایش داده شوند. در مورد ما، فرمولها به سلولهای E2 (بر اساس ردیف) و G2 (بر اساس ستون) میروند و سپس به ردیف 13 کپی میشوند.
اگر فرمولها در ردیفهای بیشتری از حد مورد نیاز کپی شوند، یک#مرجع! خطا در سلول های "اضافی" ظاهر می شود. برای جلوگیری از این اتفاق، میتوانید فرمولها را در تابع IFERROR به صورت زیر قرار دهید:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")
توجه کنید که برای اینکه فرمولها به درستی کپی شوند، محدوده را با استفاده از مراجع سلول مطلق قفل میکنیم ($ 2 دلار استرالیا: 5 دلار کانادا). در عوض، می توانید از یک محدوده نامگذاری شده استفاده کنید.
چگونه این فرمول ها کار می کنند
در زیر یک تفکیک دقیق از اولین فرمول است که سلول ها را بر اساس ردیف مرتب می کند:
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
ایده این است که از تابع INDEX برای برگرداندن مقدار یک سلول خاص بر اساس اعداد سطر و ستون نسبی آن در محدوده استفاده کنیم.
شماره ردیف با این ترکیب محاسبه می شود. :
QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
QUOTIENT بخش اعداد صحیح یک تقسیم را برمیگرداند.
برای شمارهگر ، از ROW(A1)-1 استفاده میکنید که یک عدد را برمیگرداند. شماره سریال از 0 در E2 (اولین سلولی که فرمول در آن وارد شده است) تا 11 در E13 (آخرین سلولی که فرمول در آن وارد شده است).
مخرج توسط COLUMNS($A) آورده شده است. $2:$C$5)) ثابت است و برابر است با تعداد ستونهای محدوده شما (در مورد ما 3).
اکنون، اگر نتیجه QUOTIENT را برای 3 سلول اول بررسی کنید (E2:E4) ، خواهید دید که برابر با 0 است (زیرا قسمت صحیح تقسیم صفر است). با افزودن 1، ردیف شماره 1 به دست می آید.
برای 3 سلول بعدی (E5:E5)، QUOTIENT 1 را برمی گرداند، و عملیات +1 ردیف شماره 2 را ارائه می دهد. و غیره.
به عبارت دیگر، این قسمت از فرمول یک تکرار ایجاد می کنددنباله اعداد مانند 1،1،1،2،2،2،3،3،3،4،4،4،... هر عدد به تعداد ستون هایی در محدوده شما تکرار می شود.
به شماره ستون را محاسبه کنید، با استفاده از تابع MOD یک دنباله اعداد مناسب می سازید:
MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
از آنجایی که 3 ستون در محدوده ما وجود دارد (A2:C5)، دنباله باید 1،2،3،1،2،3،…
تابع MOD باقیمانده را پس از تقسیم برمی گرداند.
در E2، MOD(ROW(A1)-1، COLUMNS ($A$2:$C$5))+1)
می شود
MOD(1-1, 3)+1)
و 1 را برمی گرداند.
در E3، MOD(ROW(A2)-1، COLUMNS($A$2:$C$5))+1)
میشود
MOD(2-1، 3) +1)
و 2 را برمی گرداند.
با ایجاد اعداد سطر و ستون، INDEX مشکلی برای واکشی مقدار لازم ندارد.
در E2، INDEX($A$2 :$C$5, 1, 1) مقدار را از ردیف 1 و ستون 1 محدوده ارجاع شده، یعنی از سلول A2 برمی گرداند.
در E3، INDEX($A$2:$C$5, 1 ، 2) مقدار را از سطر 1 و ستون 2، یعنی از سلول B2 برمی گرداند.
و غیره.
فرمول دوم که محدوده را با c اسکن می کند. olumn، به روشی مشابه کار می کند. تفاوت این است که از MOD برای بدست آوردن شماره ردیف و QUOTIENT برای بدست آوردن شماره ستون استفاده می کند.
عملکرد TOCOL کار نمی کند
اگر تابع TOCOL خطایی ایجاد کند، به احتمال زیاد این خطا وجود دارد. یکی از این دلایل است:
TOCOL در اکسل شما پشتیبانی نمی شود
وقتی یک #NAME دریافت می کنید؟ خطا، املای صحیح نام تابع اولین چیزی است که باید انجام شودبررسی. اگر نام صحیح است اما خطا همچنان ادامه دارد، این تابع در نسخه اکسل شما موجود نیست. در این مورد، استفاده از یک جایگزین TOCOL را در نظر بگیرید.
آرایه خیلی بزرگ است
خطای #NUM نشان می دهد که آرایه نمی تواند در یک ستون قرار بگیرد. یک مورد معمول زمانی است که به کل ستون ها یا ردیف ها مراجعه می کنید.
سلول های خالی کافی وجود ندارد
هنگامی که یک خطای #SPILL رخ می دهد، بررسی کنید که ستونی که فرمول در آن وارد شده است. به اندازه کافی سلول خالی دارد تا با نتایج پر شود. اگر سلول ها از نظر بصری خالی هستند، مطمئن شوید که هیچ فاصله و سایر نویسه های غیر چاپی در آنها وجود ندارد. برای اطلاعات بیشتر، به نحوه رفع خطای #SPILL در اکسل مراجعه کنید.
به این ترتیب میتوانید از تابع TOCOL در Excel 365 و راهحلهای جایگزین در نسخههای قبلی برای تبدیل یک آرایه دو بعدی به یک ستون استفاده کنید. از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینیم!
کتاب کار تمرینی
عملکرد Excel TOCOL - نمونه فرمول (فایل xlsx)
>