Nhờ giúp đỡ lọc và copy dữ liệu từ bảng ngang sang bảng dọc

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

ti8pro

Thành viên mới
Tham gia
2/4/08
Bài viết
21
Được thích
2
Dear All

Nhờ cả nhà tư vấn giúp mình bài toán sau nhé

Mình có báo cáo xuất ra từ hệ thống ở dạng bảng dữ liệu như sheet BC3A_DB

Giờ mình muốn từ Sheet BC3A_DB xuất ra báo cáo BC3B_DB

Theo đó:

Nếu chọn điều kiện xuất báo cáo ở sheet BC3B_DB, cell B8 là một Cột nào đó: ví dụ là 1
-->
- Copy danh sách các cơ quan thuế từ sheet BC3A_DB vào bảng dữ liệu Sheet BC3B_DB
- Copy giá trị tương ứng với mối loại thuế hay trong báo cáo BC3B_DB thoả mãn điều kiện Cell B

Cả nhà xem giúp nhé. Mình đang cần gấp.

Cảm ơn cả nhà nhiều nhiều

Ti8pro
 

File đính kèm

Dear All

Nhờ cả nhà tư vấn giúp mình bài toán sau nhé

Mình có báo cáo xuất ra từ hệ thống ở dạng bảng dữ liệu như sheet BC3A_DB

Giờ mình muốn từ Sheet BC3A_DB xuất ra báo cáo BC3B_DB

Theo đó:

Nếu chọn điều kiện xuất báo cáo ở sheet BC3B_DB, cell B8 là một Cột nào đó: ví dụ là 1
-->
- Copy danh sách các cơ quan thuế từ sheet BC3A_DB vào bảng dữ liệu Sheet BC3B_DB
- Copy giá trị tương ứng với mối loại thuế hay trong báo cáo BC3B_DB thoả mãn điều kiện Cell B

Cả nhà xem giúp nhé. Mình đang cần gấp.

Cảm ơn cả nhà nhiều nhiều

Ti8pro

Bạn thử mở VBE, tạo 1 Module mới và copy đoạn mã này vào:
PHP:
Sub Loc_DL()
    Dim OChon As Range
    Dim Hang As Integer
 
    Set OChon = Sheets("BC3A_DB").Range("F12:N12").Find(Range("B8"), , xlValues, xlWhole).Offset(1)
    Do
        OChon.Resize(12).Copy
        Hang = Range("C30").End(xlUp).Offset(1).Row
        Range("C" & Hang).PasteSpecial Paste:=xlPasteAll, Transpose:=True
        Cells(Hang, 2) = Sheets("BC3A_DB").Cells(OChon.Row, 1)
        Cells(Hang, 1).FormulaR1C1 = "=COUNTA(R13C[1]:RC[1])"
        With Range("A" & Hang & ":B" & Hang)
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
        End With
        Set OChon = OChon.Offset(21)
    Loop Until OChon.Value = ""
End Sub
Sau đó chọn nút lệnh Button 4 của bạn, Assign Macro cho nó là Macro Loc_DL.
--> Chọn dữ liệu cho ô B8 rồi nhấn nút thử xem có đúng ý bạn không nha.
Chúc thành công!
 
Upvote 0
Cảm ơn bạn nhiều.

Bạn có thể giúp mình thêm 1 chút không?

Mình không muốn cứ mỗi lần click nó lại copy thêm vào mà muốn mỗi lần Click --> Xóa số liệu cũ trên bảng B và điền số liệu mới.

nếu có thể --> Thêm phần ký tá bên dưới như của Bcao A
Hoặc nếu template có sẵn phần ký tá rồi --> xác định số dòng dữ liệu thuộc bảng B phụ thuộc vào số cơ quan thuế tại Bảng A thì insert số dòng + Copy dữ liệu

Special thanks
 
Upvote 0
Cảm ơn bạn nhiều.

Bạn có thể giúp mình thêm 1 chút không?

Mình không muốn cứ mỗi lần click nó lại copy thêm vào mà muốn mỗi lần Click --> Xóa số liệu cũ trên bảng B và điền số liệu mới.

nếu có thể --> Thêm phần ký tá bên dưới như của Bcao A
Hoặc nếu template có sẵn phần ký tá rồi --> xác định số dòng dữ liệu thuộc bảng B phụ thuộc vào số cơ quan thuế tại Bảng A thì insert số dòng + Copy dữ liệu

Special thanks
Bạn thử thay bằng đoạn mã này xem:
PHP:
Sub Loc_DL()
    Dim OChon As Range
    Dim Hang As Integer
 
    Do While Cells(13, 1) <> ""
        Cells(13, 1).EntireRow.Delete
    Loop
    Set OChon = Sheets("BC3A_DB").Range("F12:N12").Find(Range("B8"), , xlValues, xlWhole).Offset(1)
    Do
        Hang = Range("A30").End(xlUp).Offset(1).Row
        Cells(Hang, 1).EntireRow.Insert
        OChon.Resize(12).Copy
        Range("C" & Hang).PasteSpecial Paste:=xlPasteAll, Transpose:=True
        With Range("A" & Hang & ":B" & Hang)
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            .Font.Bold = False
            .NumberFormat = "General"
        End With
        Cells(Hang, 2) = Sheets("BC3A_DB").Cells(OChon.Row, 1)
        Cells(Hang, 1).FormulaR1C1 = "=COUNTA(R13C[1]:RC[1])"
        Set OChon = OChon.Offset(21)
    Loop Until OChon.Value = ""
End Sub
Sau đó, bạn copy nguyên phần ký tá ở Sheet A, dán vào hàng 14 của Sheet B, chỉnh lại chút xíu cho thẩm mỹ. Phần ký tá, bạn có thể copy để sẵn trong mẫu, mối lần nhấn nút, phần dữ liệu ở trên sẽ bị xóa, còn phần ký thì giữ nguyên.
Bạn có thể thêm bao nhiêu cơ quan thuế tùy ý, miễn là các cơ quan thuế có cùng số hàng, số cột.
Thử xem đúng ý bạn chưa?
(Mình đã làm trên tệp đính kèm của bạn nhưng mình không đính kèm lên đây được, bị báo lỗi Upload of file failed)
 
Lần chỉnh sửa cuối:
Upvote 0
Ngon lành rồi. Cảm ơn bạn nhé.
Thêm một chút, trường hợp thứ tự, và số lượng cột thay đổi do người dùng tự Customize hoặc nhu cầu mở rộng chỉ tiêu thì thế nào? :)

Nếu làm chỉ dùng công thức mà không dùng Macro mình vẫn có thể làm được nhưng report được xuất từ hệ thống và đối tượng dùng là nhiều người khác nhau nên muốn làm Macro cho tiện. Bạn xem giúp mình để hoàn thiện nhé

Ngồi mày mò record marco rồi lắp ghép theo cách làm công thức = tay nó cùng chạy nhưng phập phù và thỉnh thoảng có lỗi. Mình attach file kèm theo với cách tư duy của mình. Nếu có thể bạn xem debug giúp luôn nhé

Many thanks
 

File đính kèm

Upvote 0
Ngon lành rồi. Cảm ơn bạn nhé.
Thêm một chút, trường hợp thứ tự, và số lượng cột thay đổi do người dùng tự Customize hoặc nhu cầu mở rộng chỉ tiêu thì thế nào? :)

Nếu làm chỉ dùng công thức mà không dùng Macro mình vẫn có thể làm được nhưng report được xuất từ hệ thống và đối tượng dùng là nhiều người khác nhau nên muốn làm Macro cho tiện. Bạn xem giúp mình để hoàn thiện nhé

Ngồi mày mò record marco rồi lắp ghép theo cách làm công thức = tay nó cùng chạy nhưng phập phù và thỉnh thoảng có lỗi. Mình attach file kèm theo với cách tư duy của mình. Nếu có thể bạn xem debug giúp luôn nhé

Many thanks
Bạn thử dùng file này xem sao.
-0-/. Hình như mình hiểu hơi sai ý của bạn. Ý bạn là thay đổi số cột ở Sheet B đúng không? Tức là thêm mục PHẠT hoặc/và HOÀN THUẾ đúng không? Vậy thì bạn sử dụng file này nha. Ở đây mình sửa lại hàng tiêu đề trong Sheet B của bạn một xíu, có thể sẽ gọn gàng, dễ chịu hơn. Hy vọng nó sẽ làm bạn hài lòng.
Thân!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom