In theo seri của trang (1 người xem)

  • Thread starter Thread starter duhero
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

duhero

Thành viên chính thức
Tham gia
8/10/10
Bài viết
69
Được thích
1
Em có 1 file phiếu thu nhưng em cần in theo seri mỗi phiếu thu đó theo thứ tự nhỏ đến lớn
Chứ hiện tại em in xong rồi ngồi sắp xếp lại bằng tay rất mệt, có tới cả mấy nghìn tờ cơ ạ

Vậy các bác cho em hỏi có cách nào mình in theo số seri của mỗi trang không ạ ?

hoặc có thể in theo danh sách chứa số seri theo thứ tự được không?
Em xin chân thành cảm ơn các bác nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Em có 1 file phiếu thu nhưng em cần in theo seri mỗi phiếu thu đó theo thứ tự nhỏ đến lớn
Chứ hiện tại em in xong rồi ngồi sắp xếp lại bằng tay rất mệt, có tới cả mấy nghìn tờ cơ ạ

Vậy các bác cho em hỏi có cách nào mình in theo số seri của mỗi trang không ạ ?

hoặc có thể in theo danh sách chứa số seri theo thứ tự được không?
Em xin chân thành cảm ơn các bác nhiều

Góp ý cho bạn:

- Theo tôi thì chỉ cần dùng 1 phiếu thu là đủ thực hiện công việc.

- Bạn đưa cái phiếu thu mà không có sheet dữ liệu thì chẳng có thành viên nào hiểu lấy dữ liệu từ đâu để giúp cho bạn.
 
Upvote 0
Góp ý cho bạn:

- Theo tôi thì chỉ cần dùng 1 phiếu thu là đủ thực hiện công việc.

- Bạn đưa cái phiếu thu mà không có sheet dữ liệu thì chẳng có thành viên nào hiểu lấy dữ liệu từ đâu để giúp cho bạn.

Ah cái này e xuất dữ liệu từ misa bác ạ. Cái này e có cả nghìn phiếu thu hàng tháng. mỗi người 1 phiếu thu bác ah nên ko thể 1 phiếu như bác nói được đâu ạ
 
Upvote 0
Vậy cái khó của bạn là không lấy được Data từ file xuất phải không? Nếu thế thì bạn làm như thế này

Dùng công thức cho số phiếu
Mã:
=OFFSET('Page 1'![COLOR=#ff0000][B]$Z$2[/B][/COLOR],(ROW(1:1)-1)*26-(ROW(A1)=1),0)
Ngày
Mã:
=OFFSET('Page 1'![B][COLOR=#ff0000]$J$8[/COLOR][/B],(ROW(1:1)-1)*26-(ROW(A1)=1),0)
Số
Mã:
=OFFSET('Page 1'![COLOR=#ff0000][B]$U$8[/B][/COLOR],(ROW(1:1)-1)*26-(ROW(A1)=1),0)

Quy luật bạn thay cái màu đỏ đó là địa chỉ dưới 1 dòng so với phiếu đầu tiên, kéo xuống thì bạn có Data, áp dụng công thức cho các trường khác là Ok
 
Upvote 0
Vậy cái khó của bạn là không lấy được Data từ file xuất phải không? Nếu thế thì bạn làm như thế này

Dùng công thức cho số phiếu
Mã:
=OFFSET('Page 1'![COLOR=#ff0000][B]$Z$2[/B][/COLOR],(ROW(1:1)-1)*26-(ROW(A1)=1),0)
Ngày
Mã:
=OFFSET('Page 1'![B][COLOR=#ff0000]$J$8[/COLOR][/B],(ROW(1:1)-1)*26-(ROW(A1)=1),0)
Số
Mã:
=OFFSET('Page 1'![COLOR=#ff0000][B]$U$8[/B][/COLOR],(ROW(1:1)-1)*26-(ROW(A1)=1),0)

Quy luật bạn thay cái màu đỏ đó là địa chỉ dưới 1 dòng so với phiếu đầu tiên, kéo xuống thì bạn có Data, áp dụng công thức cho các trường khác là Ok

Hình như bác ko hiểu ý em, ý của em là khi em in thì số seri đó được sắp xếp từ nhỏ đến lớn
Nếu là danh sách thì lọc được, nhưng đây là 1 page 1

Cũng có thể em chưa hiểu ý của bác do em ngu muội, bác có thể nói rõ hơn 1 chút không ạ, có seri trang rồi làm sao để sắp xếp lại thứ tự trang theo seri ạ
 
Upvote 0
Hình như bác ko hiểu ý em, ý của em là khi em in thì số seri đó được sắp xếp từ nhỏ đến lớn
Nếu là danh sách thì lọc được, nhưng đây là 1 page 1

Cũng có thể em chưa hiểu ý của bác do em ngu muội, bác có thể nói rõ hơn 1 chút không ạ, có seri trang rồi làm sao để sắp xếp lại thứ tự trang theo seri ạ
Tức là

B1: bạn dùng công thức để lấy ra bảng Data
B2: sắp xếp
B3: in
 
Upvote 0
Tức là tách lấy hết data: người nộp, số tiền, ... rồi tạo lại form in bằng cách merger ạ?

Có cách nào nhanh hơn ko bác
 
Upvote 0
Em có 1 file phiếu thu nhưng em cần in theo seri mỗi phiếu thu đó theo thứ tự nhỏ đến lớn
Chứ hiện tại em in xong rồi ngồi sắp xếp lại bằng tay rất mệt, có tới cả mấy nghìn tờ cơ ạ

Vậy các bác cho em hỏi có cách nào mình in theo số seri của mỗi trang không ạ ?

hoặc có thể in theo danh sách chứa số seri theo thứ tự được không?
Em xin chân thành cảm ơn các bác nhiều
Bạn thử in bằng code này thử được không
PHP:
Sub Print_A_Z()
On Error Resume Next
Dim ArrInfo(), FirstAddress As String, FindCll As Range, n As Long, i As Long, j As Long, k As Long, Tmp As Variant
With Range("Z:Z")
    Set FindCll = .Find(What:="0??????", After:=.Cells(.Cells.Count), LookAt:=xlWhole, SearchDirection:=xlNext, SearchFormat:=False)
    If Not FindCll Is Nothing Then
        FirstAddress = FindCll.Address(0, 0)
        ReDim ArrInfo(1 To 3, 1 To 1)
        ArrInfo(1, 1) = FindCll.Value
        ArrInfo(2, 1) = FindCll.Row
        n = 1
        Do
            Set FindCll = .FindNext(After:=FindCll)
            If FindCll.Address(0, 0) = FirstAddress Then Exit Do
            ArrInfo(3, n) = FindCll.Row - 1
            n = n + 1
            ReDim Preserve ArrInfo(1 To 3, 1 To n)
            ArrInfo(1, n) = FindCll.Value
            ArrInfo(2, n) = FindCll.Row
        Loop
        ArrInfo(3, n) = Cells(.Cells.Count, 2).End(xlUp).Row
    End If
End With
For i = 1 To n
    For j = i + 1 To n
        If ArrInfo(1, i) > ArrInfo(1, j) Then
            For k = 1 To 3
                Tmp = ArrInfo(k, i):    ArrInfo(k, i) = ArrInfo(k, j):  ArrInfo(k, j) = Tmp
            Next
        End If
    Next
Next
For i = 1 To n
    Range("A" & ArrInfo(2, i) & ":AA" & ArrInfo(3, i)).Select
    Selection.PrintOut From:=1, To:=1, Copies:=1
Next
End Sub
 
Upvote 0
Bạn thử in bằng code này thử được không
PHP:
Sub Print_A_Z()
On Error Resume Next
Dim ArrInfo(), FirstAddress As String, FindCll As Range, n As Long, i As Long, j As Long, k As Long, Tmp As Variant
With Range("Z:Z")
    Set FindCll = .Find(What:="0??????", After:=.Cells(.Cells.Count), LookAt:=xlWhole, SearchDirection:=xlNext, SearchFormat:=False)
    If Not FindCll Is Nothing Then
        FirstAddress = FindCll.Address(0, 0)
        ReDim ArrInfo(1 To 3, 1 To 1)
        ArrInfo(1, 1) = FindCll.Value
        ArrInfo(2, 1) = FindCll.Row
        n = 1
        Do
            Set FindCll = .FindNext(After:=FindCll)
            If FindCll.Address(0, 0) = FirstAddress Then Exit Do
            ArrInfo(3, n) = FindCll.Row - 1
            n = n + 1
            ReDim Preserve ArrInfo(1 To 3, 1 To n)
            ArrInfo(1, n) = FindCll.Value
            ArrInfo(2, n) = FindCll.Row
        Loop
        ArrInfo(3, n) = Cells(.Cells.Count, 2).End(xlUp).Row
    End If
End With
For i = 1 To n
    For j = i + 1 To n
        If ArrInfo(1, i) > ArrInfo(1, j) Then
            For k = 1 To 3
                Tmp = ArrInfo(k, i):    ArrInfo(k, i) = ArrInfo(k, j):  ArrInfo(k, j) = Tmp
            Next
        End If
    Next
Next
For i = 1 To n
    Range("A" & ArrInfo(2, i) & ":AA" & ArrInfo(3, i)).Select
    Selection.PrintOut From:=1, To:=1, Copies:=1
Next
End Sub
Em đang test. nhưng có sửa chút là seri sẽ ở cột AB, e sửa chỗ Range(Z:Z) sao ko chạy vậy bác. có cần phải sửa ở đâu nữa ko ạ.
Rất cảm ơn bác nhiều nha. mời bác ly cafe nhé
 
Upvote 0
Em đang test. nhưng có sửa chút là seri sẽ ở cột AB, e sửa chỗ Range(Z:Z) sao ko chạy vậy bác. có cần phải sửa ở đâu nữa ko ạ.
Rất cảm ơn bác nhiều nha. mời bác ly cafe nhé
Nếu bạn đã không rành thì nên đưa file có cấu trúc giống với dữ liệu của bạn lên.
 
Upvote 0
Nếu bạn đã không rành thì nên đưa file có cấu trúc giống với dữ liệu của bạn lên.
Em có đưa file lên kèm mà anh. Thay vì cột seri ở cột Z giờ em chuyển sang cột AB anh ạ
Em đính lại file em sửa sang cột AB nhé anh giúp em với nha
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Không in cột đó anh ạ
Số seri ở cột AB mà bạn sửa code lại thành AC thì làm sao mà đúng được.
PHP:
Sub Print_A_Z()
On Error Resume Next
Dim ArrInfo(), FirstAddress As String, FindCll As Range, n As Long, i As Long, j As Long, k As Long, Tmp As Variant
With Range("AB:AB")
    Set FindCll = .Find(What:="???????", After:=.Cells(.Cells.Count), LookAt:=xlWhole, SearchDirection:=xlNext, SearchFormat:=False)
    If Not FindCll Is Nothing Then
        FirstAddress = FindCll.Address(0, 0)
        ReDim ArrInfo(1 To 3, 1 To 1)
        ArrInfo(1, 1) = FindCll.Value
        ArrInfo(2, 1) = FindCll.Row
        n = 1
        Do
            Set FindCll = .FindNext(After:=FindCll)
            If FindCll.Address(0, 0) = FirstAddress Then Exit Do
            ArrInfo(3, n) = FindCll.Row - 1
            n = n + 1
            ReDim Preserve ArrInfo(1 To 3, 1 To n)
            ArrInfo(1, n) = FindCll.Value
            ArrInfo(2, n) = FindCll.Row
        Loop
        ArrInfo(3, n) = Cells(.Cells.Count, 2).End(xlUp).Row
    End If
End With
For i = 1 To n
    For j = i + 1 To n
        If ArrInfo(1, i) > ArrInfo(1, j) Then
            For k = 1 To 3
                Tmp = ArrInfo(k, i):    ArrInfo(k, i) = ArrInfo(k, j):  ArrInfo(k, j) = Tmp
            Next
        End If
    Next
Next
For i = 1 To n
    Range("A" & ArrInfo(2, i) & ":AA" & ArrInfo(3, i)).Select
    Selection.PrintOut From:=1, To:=1, Copies:=1
Next
End Sub
 
Upvote 0
Giờ nó lại in từng dòng 1 anh ạ. e copy nguyên sy mã của anh mà nhỉ
 
Upvote 0
Được rồi anh ạ, ko hiểu sao nữa. Cảm ơn anh nhiều nhiều, nếu anh ở Hà Nội em mời a chầu cafe anh ơi cảm ơn anh lắm luôn }}}}}}}}}}}}}}}
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom