PDA

View Full Version : Cho hỏi cách phân thành nhiều trang trên 1 sheet



anhson2005
07-07-08, 10:58 PM
Hiện tại mình đang xử lý 1 file excel với số liệu khoảng 10 sheet. Mỗi sheet là 1 tỉnh, thành phố khác nhau. Các cột trên mỗi sheet đều giống nhau.
Bây giờ giả sử trên sheet Đà Nẵng, mình có 2000 dòng, mình cần phân thành 500 trang và mỗi trang chỉ cần khoảng 4 dòng thôi với mỗi trang gồm các tiêu đề giống nhau thì phải làm như thế nào.
Ví dụ như : Cộng hòa xã hội chủ nghĩa Việt Nam

sau đó mới đến tiêu đề trên các cột
Mọi người chỉ giúp mình với.
Cảm ơn rất nhiều

pqt08
08-07-08, 12:07 AM
Bây giờ giả sử trên sheet Đà Nẵng, mình có 2000 dòng, mình (1) cần phân thành 500 trang và mỗi trang chỉ cần khoảng 4 dòng thôi với (2) mỗi trang gồm các tiêu đề giống nhau thì phải làm như thế nào.
Ví dụ như : Cộng hòa xã hội chủ nghĩa Việt Nam
(3) sau đó mới đến tiêu đề trên các cột
2- Vào menu File/ Page setup/ Header-Footer/ Custom Header, chọn vị trí (trái/ giữa/ hay bên phải trang), nhập nội dung tiêu đề dầu trang, format nó nếu muốn rồi OK. Táy máy thì cũng cứ chọn tiếp Custom footer nhập dòng chữ chân trang.

3- cũng trong page setup, chọn tiếp Sheet, chọn Row to repeat at top = địa chỉ tiêu đề cột trong worksheet.
Nhớ quay lại Page setup/ Margin đặt các lề trên/ dưới, vị trí dòng đầu trang/ dòng chân trang tính từ mép giấy.

bây giờ quay lại vđề 1:
Cách 1:chuyển cursor đến vị trí muốn ngắt trang, Menu Insert/ Page break. Cách này thủ công, nhưng chỉ định chính xác vị trí mình muốn. Nhớ làm ... 500 lần như thế nhé. (Chúc bạn mạnh khoẻ) !$@!!
Cách 2:

Nhớ quay lại Page setup/ Margin đặt các lề trên/ dưới, vị trí dòng đầu trang/ dòng chân trang tính từ mép giấy.
... vậy thì ráng căn sao cho Bottom margin chỉ đủ để in (tiêu đề cột +) 4 dòng thôi. Cách này chẳng cần insert gì ráo, có vẻ ... tự động hơn, (nhưng cầu trời cho 2000 dòng kia cao bằng nhau).

Xong! Chọn Print preview trước để xem cho chắc ăn.
hì, chúc ngủ ngon! :bye1:

chibi
08-07-08, 12:08 AM
Chắc bạn muốn phân trang ra để in? Có nhiều cách để làm. Bạn hãy đưa file dữ liệu thử của bạn nên, đảm bảo có nhiều người giúp bạn.

thinhccid
08-07-08, 12:09 AM
Bạn có thể vào Page Setup - vào tab sheet và vào phần row to repeat at top và bạn đặt các dòng cần lặp lại ở các trang là okay

danghn
08-07-08, 09:12 AM
Để lặp lại tiêu đề vào file\ page setup. trong sheet chọn : row to repeat at top là được.
Còn muốn ngắt trang thì để chế độ: View\page beak preview. Sau đó muốn ngắt ở đâu thì Insert\page beak là được, muốn mấy dòng một trang cũng được mà.( ngắt trang kiểu này hơi thủ công tí)

anhson2005
08-07-08, 10:35 AM
Rất cảm ơn mọi người nhưng mình vẫn chưa thử được.

DOSNET
08-07-08, 10:41 AM
Rất cảm ơn mọi người nhưng mình vẫn chưa thử được.
Kết quả phũ phàng. +-+-+-++-+-+-++-+-+-+ Đưa dữ liệu lên xem nào bạn !

anhson2005
08-07-08, 10:48 AM
File của mình đây, các bạn làm ơn chỉnh cho mình với

phamduylong
08-07-08, 10:50 AM
Ngắt vài trang thủ công thì được, nhưng nhiều trang không khả thi vì chỉ cần sai 1 dấu ngắt thì các dấu ngắt bên dưới sai theo !
Nếu muốn tự động hóa ngắt trang phải dùng VBA. Muốn thế, dữ liệu phải có 1 trường sắp xếp theo thứ tự và có dấu hiệu nhận biết hết trang.
Ví dụ dưới đây là danh sách 1 hội đồng thi cần in danh sách phòng thi, 1 trang in sẽ in danh sách thí sinh trong cùng 1 phòng. Như vậy dấu hiệu để ngắt trang là số phòng thi chuyển từ số này sang số kế (1 > 2, 2 >3, ...)
Cột Phòng thi là A, dữ liệu bắt đầu từ dòng 2. Tùy thực tế mà các bạn thay đổi các đối số dòng, cột


Sub NgatTrang()
Dim rc As Long, stt As Integer
' Macro recorded 08/07/2008 by Pham Duy Long
Sheets("DanhSach").Select
ActiveSheet.ResetAllPageBreaks 'Xóa các dấu ngắt trang đã có
rc = Cells(Cells.Rows.Count, 1).End(xlUp).Row 'Tìm ô cuối cùng của cột A
stt = Cells(2, 1) 'Gán số phòng đầu tiên vào biến stt
For r = 2 To rc 'Duyệt cột A từ ô đầu đến ô cuối
If Cells(r, 1) <> stt Then 'Nếu ô đang duyệt <> stt thì ngắt trang
ActiveSheet.HPageBreaks.Add Before:=Cells(r, 1)
stt = Cells(r, 1)
End If
Next
End Sub

anhson2005
08-07-08, 11:23 AM
Mình còn có thêm một yêu cầu nhỏ nữa thôi. Rất mong các bạn chỉ giáo. Mình học excel lâu quá và cũng ít dùng nên kiến thức còn rât hạn chế mong các bạn giúp đỡ.

pqt08
08-07-08, 03:05 PM
Xem file đính kèm. Tôi không làm gì khác ngoài cách đã hướng dẫn ờ bài 2.Thiết nghĩ cũng đã viết khá rõ, dễ và đầy đủ!!! Mở file đính kèm và xem lại lần lượt các bước trong bài 2, cách 2.

DOSNET
08-07-08, 03:36 PM
Mình còn có thêm một yêu cầu nhỏ nữa thôi. Rất mong các bạn chỉ giáo. Mình học excel lâu quá và cũng ít dùng nên kiến thức còn rât hạn chế mong các bạn giúp đỡ.
Mình giúp bạn in tự động bằng VBA, nhớ enable macro nhé, Thân !

phamduylong
08-07-08, 04:42 PM
Đây là sub TrangIn tạo bản in cho phèp người dùng thay đổi mẫu in. Căn cứ vào vị trí ô STT, TrangIn sẽ tự dò tìm và xác định số dòng 1 trang in. Muốn in 1 trang bao nhiêu dòng tùy ý. Bạn tạo bảng dữ liệu và 1 mẫu in theo yêu cầu và theo nguyên tắc sau để VBA xác định vị trí:
1. Sheet Danh Sach:
- Phải có cột số thứ tự và tên cột là STT
- Dòng dưới của STT cuối cùng là dòng trống để VBA biết dòng kết thúc

2. Sheet Mau In:
- Phải có cột số thứ tự và tên cột là STT
- Dòng dưới của STT cuối cùng là dòng trống để VBA biết dòng kết thúc
- Các cột trong danh sách in thứ tự như sheet Danh Sach
- Nếu cần in bao nhiêu record thì cột STT đánh số từ 1 đến số đó
Ví dụ cần in 1 trang 10 record thì STT từ 1 đến 10



Sub TrangIn()
Dim rDs As Integer, cDs As Integer, cIn As Integer, rInD As Integer, rInC As Integer
Dim stt As Integer
Dim ds As Object
ThisWorkbook.Activate
Set ds = Sheets("DanhSach")
'Xac dinh o du lieu dau tien cua sheet DanhSach
ds.Select
Cells.Find(What:="stt", After:=Cells(1, 1)).Select
rDs = ActiveCell.Row + 1
cDs = ActiveCell.Column + 1
'Xac dinh o du lieu dau tien cua sheet MauIn
Sheets("MauIn").Select
Cells.Find(What:="stt", After:=Cells(1, 1)).Select
rInD = ActiveCell.Row + 1
cIn = ActiveCell.Column + 1
'Xac dinh dong so thu tu cuoi cung cua sheet MauIn
r = rInD
Do
If Cells(r, cIn - 1) = "" Then
rInC = r - 1
Exit Do
End If
r = r + 1
Loop
'Lap danh sach In
Do
Range(Cells(rInD, cIn), Cells(rInC, 256)).ClearContents
For r = rInD To rInC
cin1 = cIn
cds1 = cDs
Do
Cells(r, cin1) = ds.Cells(rDs, cds1)
cin1 = cin1 + 1: cds1 = cds1 + 1
Loop While ds.Cells(rDs, cds1) <> ""
rIn1 = rIn1 + 1
rDs = rDs + 1
Next
ActiveWindow.SelectedSheets.PrintOut
Loop While ds.Cells(rDs, 1) <> ""
End Sub

chibi
08-07-08, 08:07 PM
Bạn thử cách đơn giản này xem, dùng công thức thôi.

thaibinh_excel
09-07-08, 11:33 AM
Mình còn có thêm một yêu cầu nhỏ nữa thôi. Rất mong các bạn chỉ giáo. Mình học excel lâu quá và cũng ít dùng nên kiến thức còn rât hạn chế mong các bạn giúp đỡ.

Mình có 01 cách này, bạn xem thử. Thủ công 1 chút ở chổ phải nhập số stt cần in, nhưng tiện ích là bạn có thể mở rộng thành in 10 stt hay 20 stt trên 1 trang cũng được.

thaibinh_excel
09-07-08, 11:37 AM
Bạn thử cách đơn giản này xem, dùng công thức thôi.
File của bạn chibi hình như nhập số lớn hơn thì không hiện danh sách không đúng được bạn ơi?

:-)

hoahongmotgai
09-07-08, 11:47 AM
File của bạn chibi hình như nhập số lớn hơn thì không hiện danh sách không đúng được bạn ơi?

:-)

File của bạn Chibi khi nhập số lớn hơn bạn chỉ cần sửa vùng chọn trong công thức sao cho hết bảng dữ liệu là OKie mà.

anhson2005
09-07-08, 12:07 PM
Tại mình nói chưa rõ nên mọi người hiểu nhầm. Ý mình là số TT ở các trang luôn là số đếm từ 1 đến 5

anhson2005
09-07-08, 12:09 PM
Bạn chibi ơi, mình rất cảm ơn bạn nhưng mình muốn bạn giúp mình làm cụ thể luôn được không. Ví dụ danh scáh trong sheet mình là 50 thì bạn phân luôn thành 10 trang trong cùng 1 sheet được ko?
Làm ơn giúp mình với!

anhson2005
09-07-08, 12:15 PM
Bạn thử cách đơn giản này xem, dùng công thức thôi.
Mình đã hiểu cách của bạn nhưng mình muốn thể hiện rõ 10 trang trên 1 sheet luôn. Vì mình sẽ in hết 10 trang đó luôn 1 lúc. Bạn biết không, số liệu của mình hiện tại là 8000 dòng chia thành 10 sheet, mỗi sheet là 1 tỉnh thành nên rất nhiều. Có sheet nhiều nhất lên đến 2000 khách hàng luôn tương ứng với là khoảng 400 trang đấy bạn à. Mình rất mong bạn giúp mình vì đây là công đoạn mệt nhất mà mình đang đau hết cả đầu đây.

DOSNET
09-07-08, 12:26 PM
Mình đã hiểu cách của bạn nhưng mình muốn thể hiện rõ 10 trang trên 1 sheet luôn. Vì mình sẽ in hết 10 trang đó luôn 1 lúc. Bạn biết không, số liệu của mình hiện tại là 8000 dòng chia thành 10 sheet, mỗi sheet là 1 tỉnh thành nên rất nhiều. Có sheet nhiều nhất lên đến 2000 khách hàng luôn tương ứng với là khoảng 400 trang đấy bạn à. Mình rất mong bạn giúp mình vì đây là công đoạn mệt nhất mà mình đang đau hết cả đầu đây.
Bạn đưa cái form chuẩn đi, mình sửa lại cho. Nếu kích thước Form như thế thì mỗi trang A4 có thể in được 4 form thôi !
- Thứ 2 là bạn muốn số thứ tự thay đổi hay Form nào cũng từ 1-5
- Bạn yên tâm là sau khi làm xong, quá trình in và thay đổi danh sách hoàn toàn tự động (bạn chỉ ngồi chơi thôi)
- Nói rõ yêu cầu hoặc up dữ liệu thật lên, sẽ làm hoàn chỉnh cho bạn !

anhson2005
09-07-08, 01:04 PM
Bạn đưa cái form chuẩn đi, mình sửa lại cho. Nếu kích thước Form như thế thì mỗi trang A4 có thể in được 4 form thôi !
- Thứ 2 là bạn muốn số thứ tự thay đổi hay Form nào cũng từ 1-5
- Bạn yên tâm là sau khi làm xong, quá trình in và thay đổi danh sách hoàn toàn tự động (bạn chỉ ngồi chơi thôi)
- Nói rõ yêu cầu hoặc up dữ liệu thật lên, sẽ làm hoàn chỉnh cho bạn !
Mình rất vui vì bạn đã sẵn sàng giúp đỡ mình. Mình sẽ cố gắng hoàn thành bảng dữ liệu này và sẽ gửi lên, hy vọng các bạn sẽ giúp đỡ mình nhé. Mình cảm ơn rất nhiều.
À, mà file này lớn quá mình sẽ gửi từng file tương ứng với các tỉnh thành hay là các sheet tương ứng với các tỉnh thành.

anhson2005
09-07-08, 01:48 PM
Mình rất vui vì bạn đã sẵn sàng giúp đỡ mình. Mình sẽ cố gắng hoàn thành bảng dữ liệu này và sẽ gửi lên, hy vọng các bạn sẽ giúp đỡ mình nhé. Mình cảm ơn rất nhiều.
À, mà file này lớn quá mình sẽ gửi từng file tương ứng với các tỉnh thành hay là các sheet tương ứng với các tỉnh thành.
Đây là file mẫu mình đã sửa lại và nói rõ cách làm các bạn xem giúp lại mình với

DOSNET
09-07-08, 02:23 PM
Đây là file mẫu mình đã sửa lại và nói rõ cách làm các bạn xem giúp lại mình với
Bạn xác định trang đầu và trang cuối cần in. Ấn nút PRINT, Dữ liệu sẽ tự động cập nhật và in ra cho bạn ! Dữ liệu mình làm chờ sẵn đến 2000 dòng, nếu có thêm bạn sửa lại name DS là Ok. Chúc thành công !

hoahongmotgai
09-07-08, 05:16 PM
Bạn xác định trang đầu và trang cuối cần in. Ấn nút PRINT, Dữ liệu sẽ tự động cập nhật và in ra cho bạn ! Dữ liệu mình làm chờ sẵn đến 2000 dòng, nếu có thêm bạn sửa lại name DS là Ok. Chúc thành công !

Anh có thể hướng dẫn em cách làm để em tự làm cho những trường hợp khác không ah?
Thanks anh nhiều :)

anhson2005
10-07-08, 09:31 AM
Bạn xác định trang đầu và trang cuối cần in. Ấn nút PRINT, Dữ liệu sẽ tự động cập nhật và in ra cho bạn ! Dữ liệu mình làm chờ sẵn đến 2000 dòng, nếu có thêm bạn sửa lại name DS là Ok. Chúc thành công !
DOSNET ơi rất cảm ơn bạn nhưng mình nói thật mình không có biết gì về macro hết nên khi mình bấm nút in thì không in được và ra thông báo là đặt lại security level gì đó. Mình chẳng biết làm nhưng thế nào. Mình đã đặt lại vẫn không in được hay là excel của mình là excel 2003. Mình rất xin lỗi vì làm phiền mọi người.-\\/.

anhson2005
10-07-08, 06:01 PM
Bạn xác định trang đầu và trang cuối cần in. Ấn nút PRINT, Dữ liệu sẽ tự động cập nhật và in ra cho bạn ! Dữ liệu mình làm chờ sẵn đến 2000 dòng, nếu có thêm bạn sửa lại name DS là Ok. Chúc thành công !
Mình đã in được rồi, mình thực sụ rất biết ơn bạn rất nhiều. Bạn đã giúp mình một việc rất lớn.

philip
11-07-08, 12:59 PM
Ko biết trong exce2003 có thể định dạng trang in ngang dọc như trong word ko nhỉ.
Giả sử, trong 1 sheet1 có 5 trang in (1,2,3,4,5) các trang 1,2,4 in dọc bình thường nhưng trang 3,5 fải in ngang lại//////