Lọc các hàng có giá trị theo khoảng thời gian xác định (cột xác định) (1 người xem)

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

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

Tsuga

Thành viên mới
Tham gia
14/4/12
Bài viết
5
Được thích
0
Dear anh chị,

Hiện tại em đang có 1 bài toán cần giải quyết như sau:
Em có 1 bảng giá trị như file đính kèm, bao gồm các phần chính: các cột ngày trong tháng và các hàng tên máy tương ứng.
Mỗi máy có 1 ngày cần bảo dưỡng khác hoặc trùng nhau (đánh dấu X), có thể trong tháng 1 máy có nhiều ngày bảo dưỡng.
Giả sử bài toán của em cụ thể mong muốn lọc: Khi mình yêu cầu tìm trong tuần đầu tiên từ 1/1 đến 7/1, tất cả các hàng của máy 2, 3,4, 6 có lịch bảo dưỡng (X) sẽ hiện lên, các hàng các máy còn lại (trống trong khoảng t/g đang chọn) sẽ ẩn đi. Thời gian lọc linh động theo yêu cầu.
Nhờ anh chị trợ giúp em xử lý bài toán này với.

Em cám ơn mọi người rất nhiều.
 

File đính kèm

Dear anh chị,

Hiện tại em đang có 1 bài toán cần giải quyết như sau:
Em có 1 bảng giá trị như file đính kèm, bao gồm các phần chính: các cột ngày trong tháng và các hàng tên máy tương ứng.
Mỗi máy có 1 ngày cần bảo dưỡng khác hoặc trùng nhau (đánh dấu X), có thể trong tháng 1 máy có nhiều ngày bảo dưỡng.
Giả sử bài toán của em cụ thể mong muốn lọc: Khi mình yêu cầu tìm trong tuần đầu tiên từ 1/1 đến 7/1, tất cả các hàng của máy 2, 3,4, 6 có lịch bảo dưỡng (X) sẽ hiện lên, các hàng các máy còn lại (trống trong khoảng t/g đang chọn) sẽ ẩn đi. Thời gian lọc linh động theo yêu cầu.
Nhờ anh chị trợ giúp em xử lý bài toán này với.

Em cám ơn mọi người rất nhiều.
Bạn làm thử như sau:
Chèn thêm 3 dòng phía trên dòng tiêu đề hiện tại, sao cho ô chứa "STT" nằm tại a4
tại a2: nhập ngày bắt đầu
tại b2: nhập ngày kết thúc
rồi chạy đoạn code dưới đây
Mã:
Sub Filter_()
Dim i As Integer, j As Integer, x As Integer, z As Integer, k As Integer
With Sheet1
    .UsedRange.EntireRow.Hidden = 0
    k = .Range("b2") - .Range("a2")
    For j = 4 To 34
        If .Cells(5, j).Value = .Range("a2") Then
            For i = 6 To 11
                z = 0
                For x = j To j + k
                    If x > 34 Then
                        Exit For
                    Else
                        If .Cells(i, x).Value = "X" Then
                            z = 1
                            Exit For
                        End If
                    End If
                Next x
                If z = 0 Then
                    .Rows(i).Hidden = 1
                End If
            Next i
        End If
    Next j
End With
End Sub
 
Dear anh chị,

Hiện tại em đang có 1 bài toán cần giải quyết như sau:
Em có 1 bảng giá trị như file đính kèm, bao gồm các phần chính: các cột ngày trong tháng và các hàng tên máy tương ứng.
Mỗi máy có 1 ngày cần bảo dưỡng khác hoặc trùng nhau (đánh dấu X), có thể trong tháng 1 máy có nhiều ngày bảo dưỡng.
Giả sử bài toán của em cụ thể mong muốn lọc: Khi mình yêu cầu tìm trong tuần đầu tiên từ 1/1 đến 7/1, tất cả các hàng của máy 2, 3,4, 6 có lịch bảo dưỡng (X) sẽ hiện lên, các hàng các máy còn lại (trống trong khoảng t/g đang chọn) sẽ ẩn đi. Thời gian lọc linh động theo yêu cầu.
Nhờ anh chị trợ giúp em xử lý bài toán này với.

Em cám ơn mọi người rất nhiều.
Giả sử: thay đổi thời gian theo dõi bảo dưỡng tại:
B11= 01/01
B12= 07/01
Mã:
A15=IF(B15<>"",MAX($A$14:A14)+1,"")
B15=IFERROR(OFFSET($B$2,MATCH(1,INDEX((MMULT(N(OFFSET($C$3:$C$8,,MATCH($B$11,$D$2:$AH$2,),,$B$12-$B$11+1)="x"),ROW(INDIRECT("1:"&$B$12-$B$11+1))^0)>0)/(COUNTIF($B$14:$B14,$B$3:$B$8)=0),),),),"")
Enter, fill cả hàng xuống.

Thân
 

File đính kèm

Đáp án khác ...
 

File đính kèm

Web KT

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

Back
Top Bottom