گاهی اوقات داده هایی که در یک کاربرگ جمع آوری می کنید به خوبی در یک ستون قرار می گیرند. به عنوان مثال، شما ممکن است لیستی از نام ها داشته باشید، و همه آنها در ستون A از کاربرگ شما قرار دارند. هنگامی که کاربرگ را انتخاب میکنید، میتواند چند صفحه را مصرف کند، همه آنها تقریباً خالی هستند زیرا سمت چپ هر صفحه دارای یک نام است و سمت راست دارای فضای سفید است.
در این نوع نمونه، خوب است که تک ستون را طوری چاپ کنید که انگار چندین ستون است. به این ترتیب می توانید تعداد بیشتری از هر صفحه چاپ شده و تعداد صفحات کمتری را برای کار چاپ خود استفاده کنید. متأسفانه، اکسل حاوی هیچ دستور ذاتی یا تنظیمات چاپی نیست که به شما امکان می دهد داده های خود را به طور خودکار قالب بندی کنید تا بهتر چاپ شوند. با این حال راهحلهایی وجود دارد.
یکی از راهحلهایی که اغلب نادیده گرفته میشود، کپی کردن فهرست تک ستونی در یک سند Word خالی است. اگر آن را به عنوان متن ساده در آنجا بچسبانید، می توانید هر صفحه را برای چندین ستون قالب بندی کنید و در واقع اطلاعات را چاپ کنید.
اگر ترجیح میدهید Word را درگیر نکنید، میتوانید اطلاعات را از ستون اول در ستونهای دیگر برش داده و جایگذاری کنید تا تعداد ستونهای چاپی مورد نظر را ارائه دهید. البته این کار باید در یک کاربرگ یا کتاب کار جدید انجام شود تا داده های اصلی دست نخورده باقی بمانند. به عنوان مثال، اگر 200 نام در لیست اصلی خود دارید، می توانید هر بار 40 نام را از لیست جدا کرده و در ستون های A تا E یک کاربرگ جدید قرار دهید. چاپ این کاربرگ به صفحات کمتری نسبت به چاپ کاربرگ تک ستونی اصلی نیاز دارد.
البته، اگر مجبور باشید این کار را اغلب انجام دهید، این کار می تواند به سرعت خسته کننده شود. در این مثال، میتوانید از یک ماکرو استفاده کنید که دقیقاً همان کار را انجام میدهد: فهرست اصلی را برش میدهد و قطعه قطعه میکند و آن را در تعدادی ستون در یک کتاب کار جدید قرار میدهد.
Sub SingleToMultiColumn()
Dim rng As Range
Dim iCols As Integer
Dim lRows As Long
Dim iCol As Integer
Dim lRow As Long
Dim lRowSource As Long
Dim x As Long
Dim wks As Worksheet
Set rng = Application.InputBox _
(prompt:="Select the range to convert", _
Type:=8)
iCols = InputBox("How many columns do you want?")
lRowSource = rng.Rows.Count
lRows = lRowSource / iCols
If lRows * iCols <> lRowSource Then lRows = lRows + 1
Set wks = Worksheets.Add
lRow = 1
x = 1
For iCol = 1 To iCols
Do While x
When you run this macro, you are asked to select the range you want to convert, and then you are asked to specify the number of columns you want it to be reformatted as. It creates a new worksheet in the current workbook and copies information from the original into as many columns as you specified.
For additional resources to solve this problem, refer to the following Web sites:
http://www.ozgrid.com/VBA/MiscVBA.htm#Print
http://dmcritchie.mvps.org/excel/snakecol.htm