Lọc dữ liệu theo tuần và ẩn dòng không có giá trị

Liên hệ QC

Ai_Ma_Biet

Thành viên hoạt động
Tham gia
22/4/15
Bài viết
127
Được thích
20
Giới tính
Nam
Chào Anh, Chị.

Em có dữ liệu như file đính kèm,

Sheet "Chi tiết" có dữ liệu các tuần trong năm (từ cột P đến cột W).
Em muốn lọc dữ liệu theo tuần qua sheet "bang ke theo dữ liệu ở sheet "chi tiet" với điều kiện theo tuần như sau:
Nhập tuần vào ô H1 bên sheet "bang ke" thì dữ liệu bên sheet "chi tiet" sẽ lọc qua sheet "bang ke" từ dòng B9 đến H55.
A9 đến A55 sẽ hiện số thứ tự liên tục, nếu cột B tương ứng có dữ liệu thì sẽ có số thứ tự, còn không thì để trống.
Từ dòng A9 đến H55 nếu không có dữ liệu thì ẩn những dòng này đi.

Cám ơn Anh, Chị.

Chúc đầu tuần vui vẻ.
 

File đính kèm

Giúp mình với.
 
Cái này mỗi lần thay đổi tuần phải lọc thủ công lại hả bạn, mình có thể cho nó tự động ẩn được không.
Bạn thử với:
PHP:
  With Sheets("Chi tiet")
        a = .Range("P2", .Range("P65000").End(3)).Resize(, 8).Value
        LR = UBound(a)
    End With
    DK = Sheets("Bang ke").Range("H1")
    ReDim b(1 To LR, 1 To 8)
    With Sheets("Bang ke")
        For i = 1 To LR
            If a(i, 8) = DK Then
                k = k + 1: b(k, 1) = k
                For j = 2 To 8
                    b(k, j) = a(i, j - 1)
                Next j
            End If
        Next i
        Sheets("Bang ke").Range("A9:H54").ClearContents
        If k Then
            With Sheets("Bang ke")
                .Range("A9").Resize(k, 8) = b
               ' .Rows(k + 9 & ":55").Hidden = True
            End With
        End If
    End With
 
Lần chỉnh sửa cuối:
Bạn thử với:
PHP:
  With Sheets("Chi tiet")
        a = .Range("P2", .Range("P65000").End(3)).Resize(, 8).Value
        LR = UBound(a)
    End With
    DK = Sheets("Bang ke").Range("H1")
    ReDim b(1 To LR, 1 To 8)
    With Sheets("Bang ke")
        For i = 1 To LR
            If a(i, 8) = DK Then
                k = k + 1: b(k, 1) = k
                For j = 2 To 8
                    b(k, j) = a(i, j - 1)
                Next j
            End If
        Next i
        Sheets("Bang ke").Range("A9:H54").ClearContents
        If k Then
            With Sheets("Bang ke")
                .Range("A9").Resize(k, 8) = b
                .Rows(k + 9 & ":55").Hidden = True
            End With
        End If
    End With
Không được bạn ơi.
 
Chào Anh, Chị.

Em có dữ liệu như file đính kèm,

Sheet "Chi tiết" có dữ liệu các tuần trong năm (từ cột P đến cột W).
Em muốn lọc dữ liệu theo tuần qua sheet "bang ke theo dữ liệu ở sheet "chi tiet" với điều kiện theo tuần như sau:
Nhập tuần vào ô H1 bên sheet "bang ke" thì dữ liệu bên sheet "chi tiet" sẽ lọc qua sheet "bang ke" từ dòng B9 đến H55.
A9 đến A55 sẽ hiện số thứ tự liên tục, nếu cột B tương ứng có dữ liệu thì sẽ có số thứ tự, còn không thì để trống.
Từ dòng A9 đến H55 nếu không có dữ liệu thì ẩn những dòng này đi.

Cám ơn Anh, Chị.

Chúc đầu tuần vui vẻ.
xem file đính kèm nha bạn.
 

File đính kèm

xem file đính kèm nha bạn.
Mình chỉnh lại tí:
Sử dụng array như code bạn @phulien1902 đã làm, tốc độ tăng đáng kể so với việc copy từng dòng từ Sheet2 qua Sheet1.
Nhưng mình dùng "FIND" và vòng lập chỉ những hàng đúng với tuần mà mình cần filter thôi, do đó số vòng lập giảm đi đáng kể
Bạn coi file đính kèm nha
 

File đính kèm

Góp vui, đang thiếu một số điều kiện
 

File đính kèm

Em copy cả vào Module hay Thisworkbook hay sheet Bang ke đều không được. Code bắt đầu bằng with hình như thiếu bước khai báo.
Chắc bạn không thêm sub, end sub theo code bạn @phulien1902 , và cũng thiếu module trong worksheet là change rồi
Bài đã được tự động gộp:

Sửa thêm nếu tuần nào không có dữ liệu thì ẩn hết các dòng từ dòng 9 đến 55 giúp mình với.
Code của bạn @phulien1902 , mình thêm tí theo yêu cầu của bạn:
Mã:
Sub Test()
    Dim a(), b(), i&, k%, LR, j%, DK
    With Sheets("Chi tiet")
        a = .Range("P2", .Range("P65000").End(3)).Resize(, 8).Value
        LR = UBound(a)
    End With
    DK = Sheets("Bang ke").Range("H1")
    ReDim b(1 To LR, 1 To 8)
    With Sheets("Bang ke")
    .Rows("8:56").Hidden = False
        For i = 1 To LR
            If a(i, 8) = DK Then
                k = k + 1: b(k, 1) = k
                For j = 2 To 8
                    b(k, j) = a(i, j - 1)
                Next j
            End If
        Next i
        Sheets("Bang ke").Range("A9:H54").ClearContents
        If k Then
            With Sheets("Bang ke")
                .Range("A9").Resize(k, 8) = b
            End With
        End If
        .Rows(k + 9 & ":55").Hidden = True
    End With
End Sub
Bài đã được tự động gộp:

Bạn thử với:
PHP:
  With Sheets("Chi tiet")
        a = .Range("P2", .Range("P65000").End(3)).Resize(, 8).Value
        LR = UBound(a)
    End With
    DK = Sheets("Bang ke").Range("H1")
    ReDim b(1 To LR, 1 To 8)
    With Sheets("Bang ke")
        For i = 1 To LR
            If a(i, 8) = DK Then
                k = k + 1: b(k, 1) = k
                For j = 2 To 8
                    b(k, j) = a(i, j - 1)
                Next j
            End If
        Next i
        Sheets("Bang ke").Range("A9:H54").ClearContents
        If k Then
            With Sheets("Bang ke")
                .Range("A9").Resize(k, 8) = b
                .Rows(k + 9 & ":55").Hidden = True
            End With
        End If
    End With
Bạn @phulien1902 cho hỏi, code có màu chữ thì khi dán code mình chọn mục nào vậy?
1595302440827.png
 
Lần chỉnh sửa cuối:
Chắc bạn không thêm sub, end sub theo code bạn @phulien1902 , và cũng thiếu module trong worksheet là change rồi
Bài đã được tự động gộp:


Code của bạn @phulien1902 , mình thêm tí theo yêu cầu của bạn:
Mã:
Sub Test()
    Dim a(), b(), i&, k%, LR, j%, DK
    With Sheets("Chi tiet")
        a = .Range("P2", .Range("P65000").End(3)).Resize(, 8).Value
        LR = UBound(a)
    End With
    DK = Sheets("Bang ke").Range("H1")
    ReDim b(1 To LR, 1 To 8)
    With Sheets("Bang ke")
    .Rows("8:56").Hidden = False
        For i = 1 To LR
            If a(i, 8) = DK Then
                k = k + 1: b(k, 1) = k
                For j = 2 To 8
                    b(k, j) = a(i, j - 1)
                Next j
            End If
        Next i
        Sheets("Bang ke").Range("A9:H54").ClearContents
        If k Then
            With Sheets("Bang ke")
                .Range("A9").Resize(k, 8) = b
            End With
        End If
        .Rows(k + 9 & ":55").Hidden = True
    End With
End Sub
Bài đã được tự động gộp:


Bạn @phulien1902 cho hỏi, code có màu chữ thì khi dán code mình chọn mục nào vậy?
View attachment 241540
Bạn Copy Code của bạn vào
Mã:
[php] Code ở đây[/php]
Chúc bạn thành công!
 
Bạn dùng Code sau:
PHP:
 Code của bạn đặt vào đây nhé
Chúc bạn thành công!
Mình có gửi cái hình đó, mình hay dùng biểu tượng "</>" để dán code nhưng nó không có màu giống như của bạn. Bạn chỉ cho mình cái biểu tượng nào với
 
Mình có gửi cái hình đó, mình hay dùng biểu tượng "</>" để dán code nhưng nó không có màu giống như của bạn. Bạn chỉ cho mình cái biểu tượng nào với
Tôi không biết nó đặt chỗ nào, tôi thường gõ tay thủ công thôi, có mấy ký tự thôi bạn ơi.
 
Web KT

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

Back
Top Bottom