تبدیل یک ستون به چند ردیف یا ستون در اکسل
روش 1) فرمول نویسی:
بوسیله توابع Row،Index و Column میتوان اینکار را انجام داد.
ابتدا پس از کپی دادهها درون اکسل، باید مشخص کنید که میخواهید دادهها به چند ستون تبدیل شوند، تعداد این ستونها را با n نمایش میدهیم. مثلا میخواهیم تغییرات دما و فشار در طول زمان نشان داده شود بنابراین n=3 ستون باید ایجاد شود. ستون زمان، ستون دما و ستون فشار.
در اولین سلول خالی کنار دادهها فرمول زیر را پیست میکنیم و به سایر سلولها هم انتقال میدهیم.
=INDE محدوده,n*(ROW(A1)-1)+COLUMN(A1))
چون برای مثال بالا محدوده A1:A9 و n=3 است بنابراین فرمول بصورت زیر اصلاح میشود. البته دقت کنید که محدوده را در فرمول بالا با قرار دادن علامت $ در اطراف آن باید ثابت نگه داشت تا تغییر نکند.
=INDE $A$1:$A$9,3*(ROW(A1)-1)+COLUMN(A1))
البته از تابع OFFSET نیز میتوان استفاده کرد.
روش 2) به وسیلهی امکانات مرتب کردن یا فیلتر کردن
میتوان با استفاده از مرتب کردن نیز دادهها را جابجا کرد. به این صورت که بسته به اینکه چند ستون میخواهید ایجاد کنید به همان تعداد، حروف پشت سر هم را در ستون کنار ستون دادهایتان تکرار کنید و سپس دادهها را بر اساس حروف مرتب کرده و در پایان آنها را جابجا کنید.
البته بجای تایپ حروف میتوانید فرمول زیر را در اولین سلول کپی کرده (بجای تایپ حرف a) و سپس مشابه شکل بالا در سایر سلولها اعمال کنید و بقیه مراحل را مشابه شکل بالا انجام دهید.
=MOD(ROW(A1)+n-1,n)
که برای مثال بالا بجای n باید عدد 3 قرار داد.
=MOD(ROW(A1)+2,3)
تابع MOD:
تابع MOD برای تعیین باقیمانده تقسیم استفاده میشوند. در واقع این تابع دو ورودی را دریافت میکند و خروجی آن برابر است با میزان باقیمانده ناشی از تقسیم ورودی اول بر ورودی دوم. برای مثال اگر در سلول A1 عبارت زیر را وارد کنید، خروجی آن برابر با 1 میشود، زیرا باقیمانده تقسیم 4 بر 3 برابر است با 1.
=MOD(4,3)
ابتدا دادههای خود را در ستون A نرمافزار اکسل کپی کنید. سپس کلیدهای Alt + F11 را فشار دهید یا از تب Developer قسمت code گزینه Visual Basic را انتخاب کنید. پنجره Microsoft Visual Basic ظاهر میشود. در این پنجره از تب Insert گزینه Module را انتخاب نمائید.
در پنجره جدید باز شده کدهای زیر را کپی کنید.
SubOneCol2nCols()'n = 3
m = 9
k = 1
For i = 1 To m / n
For j = 1 To n
Cells(k, 1).Select
Selection.Copy
Cells(i, j + 2).Select
ActiveSheet.Paste
k = k + 1
Next
Next
End Sub
دقت کنید که در کد فوق باید بجای n و m با توجه به دادههای خود عدد بگذارید. n تعداد ستونها و m تعداد کل دادهها است که در مثال ما n=3 و m=9.
سپس کلید F5 را فشار دهید تا عملیات جابجایی انجام شود.
از کد زیر نیز میتوانید استفاده کنید:
SubTrsPose()
Dim Area As Range, i As Long
Dim LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
For Each Area In Range("A1:A" & LR).SpecialCells(xlCellTypeConstants).Areas
i = i + 1
Range("B" & i).Resize(, Area.Rows.Count).Value = Application.Transpose(Area)
Next Area
End Sub
روش 4) با استفاده از افزونههای اکسل
-
افزونه ASAP Utilities:
پس از دانلود و نصب این Add-in، تب جدیدی با عنوان ASAP Utilities به اکسل اضافه میشود.
نحوه استفاده از این افزونه در این سایت توضیح داده شده است.
-
افزونه Kutools for Excel:
افزونه Kutools for Excel نیز مشابه افزونه قبلی قابلیت تبدیل یک ستون به چند ردیف را دارد. پس از دانلود و نصب این Add-in، تب جدیدی به اکسل با عنوان Kutools اضافه میشود. نحوه استفاده از این افزونه در این سایت توضیح داده شده است.
1- نصب افزونه Kutools for Excel که در بالا به آن اشاره شد
2- ماکرو نویسی: با استفاده از ماکرو زیر میتوانید عملیات فوق را انجام دهید. نحوه استفاده از ماکرو در بالا در قسمت روش 3 توضیح داده شده است. فقط باید دقت کنید که عامل توقف حلقه وجود سلول خالی است نه Hello، بنابراین وجود سلول خالی بین مجموعهها الزامی است. البته باید به جای عدد 4، تعداد ردیفهایی که میخواهید ایجاد شود را قرار دهید. که در مثال فوق 4 است.
SubOneCol2Cols()
k = 1
For i = 1 To 4
j = 1
Do Until IsEmpty(Cells(k, 1))
Cells(k, 1).Select
Selection.Copy
Cells(i, j + 2).Select
ActiveSheet.Paste
k = k + 1
j = j + 1
Loop
k = k + 1
Next
End Sub
امید واریم ازاین آموزش نیز لذت برده باشید
- لینک منبع
تاریخ: سه شنبه , 07 آذر 1402 (05:19)
- گزارش تخلف مطلب