Bảng liệt kê thỏa 1 trong 2 điều kiện (1 người xem)

Liên hệ QC

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

toangiaphat

Thành viên hoạt động
Tham gia
6/5/09
Bài viết
136
Được thích
3
Các bạn cho xin code liệt kê trong sheet 2 thỏa 1 trong 2 điều kiện. Dữ liệu lấy từ sheet 1
cám ơn
 

File đính kèm

Bạn bấm vào button 1 bên sheet 2
 

File đính kèm

Upvote 0
Upvote 0
ủa sao cần phải có tới 2 cột [Result] làm điều kiện vậy bạn ? lỡ danh sách giá trị cột [Result] có 100 cái thì bạn cần 100 cột ư ?

Cái này em không biết, em chỉ làm theo thói quen thôi... nếu có trăm cái thì đương nhiên em sẽ không làm vậy

Em xóa thử 1 cột [Result] đi và sắp xếp lại thế này thấy cũng ra kết quả..

anh hpkhuong bữa nay hơi "kiêu" à nha ... bắt chuyện với chả mà chả hổng thèm tiếp lời kìa
 

File đính kèm

  • bg.PNG
    bg.PNG
    1.4 KB · Đọc: 73
Lần chỉnh sửa cuối:
Upvote 0
Mình xin lỗi đã ko nói rõ vấn đề.
Mình muốn khi sheet 1 nhập liệu thì sheet2 tự động update các dữ liệu có cột result là "y" hoặc "n".
Cám ơn
 
Upvote 0
Bạn sữa lại cho sheet 2 tự động update khi sheet1 có phát sinh nhé.
Mình tạo thêm cột Result, để bạn hiểu thôi. Thật ra cột đó sẽ xóa đi.
Cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn sữa lại cho sheet 2 tự động update khi sheet1 có phát sinh nhé.
Mình tạo thêm cột Result, để bạn hiểu thôi. Thật ra cột đó sẽ xóa đi.
Cám ơn
Nếu tận dụng Advance Filter thì bạn dùng code này.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lr As Integer
    If Target.Column = 4 Then
        With Sheets("Sheet2")
            .Range("A1:D6500").Clear
            .Range("I1").Value = "RESULTS "
            .Range("I2").Value = "Y"
            .Range("I3").Value = "N"
         
        lr = Sheets("Sheet1").Range("D" & Rows.Count).End(3).Row
        Sheet1.Range("A1:D" & lr).AdvancedFilter 2, .Range("I1:I3"), .Range("A1")
         .Range("I1:I3").Clear
       End With
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu tận dụng Advance Filter thì bạn dùng code này.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lr As Integer
    If Target.Column = 4 Then
        With Sheets("Sheet2")
            .Range("A1:D6500").Clear
            .Range("I1").Value = "RESULTS "
            .Range("I2").Value = "Y"
            .Range("I3").Value = "N"
         
        lr = Sheets("Sheet1").Range("D" & Rows.Count).End(3).Row
        Sheet1.Range("A1:D" & lr).AdvancedFilter 2, .Range("I1:I3"), .Range("A1")
         .Range("I1:I3").Clear
       End With
    End If
End Sub

Có phát sinh lỗi bạn ơi!
1/ Tại Sheet 1 nhập liệu nó bị lỗi con trỏ chọn cell năm ở nhiều nơi. (bạn thử nhập liệu nhé)
2/ Nếu Cột Result Mình ko nhập gì hết thì VBA báo lỗi.
3/ Tiêu đề của sheet 2 mình để cố định ko bị mất khi xóa dữ liệu sheet 1.

(Nếu bạn có cách khác ko dùng Advance Filter cũng được)
Cám ơn
 

File đính kèm

Upvote 0
Có phát sinh lỗi bạn ơi!
1/ Tại Sheet 1 nhập liệu nó bị lỗi con trỏ chọn cell năm ở nhiều nơi. (bạn thử nhập liệu nhé)
2/ Nếu Cột Result Mình ko nhập gì hết thì VBA báo lỗi.
3/ Tiêu đề của sheet 2 mình để cố định ko bị mất khi xóa dữ liệu sheet 1.

(Nếu bạn có cách khác ko dùng Advance Filter cũng được)
Cám ơn
Thế thì code này vậy
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i, j, k, lr As Integer, arr
    If Target.Column = 4 Then
        lr = Sheets("Sheet1").Range("D" & Rows.Count).End(3).Row
        ReDim arr(1 To lr, 1 To 4)
         Sheets("Sheet2").Range("A2:D6500").Clear
        If lr > 1 Then
            For i = 2 To lr
                If Cells(i, 4) = "Y" Or Cells(i, 4) = "N" Then
                    k = k + 1
                    For j = 1 To 4
                        arr(k, j) = Cells(i, j)
                    Next
                End If
            Next
            
            if k > 0 then Sheets("Sheet2").Range("A2").Resize(k, 4) = arr
        End If
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn giúp mình file này nhé. Khi sheet Result cột Q là "Y" hoặc "N" thì tự động sheet Phone sẽ liệt kê dữ liệu tương ứng
Cám ơn
Bạn muốn bê nguyên từ sheet Result sang Phone hay chỉ cần vài cột bạn viết chữ bên PHONE?

Code bê nguyên
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i, j, k, lr As Integer, arr
    If Target.Column = 17 Then
        lr = Sheets("RESULT").Range("E" & Rows.Count).End(3).Row
        ReDim arr(1 To lr, 1 To 27)
        Sheets("PHONE").Range("A2:D6500").Clear
        If lr > 1 Then
            For i = 2 To lr
                If Cells(i, 17) = "Y" Or Cells(i, 17) = "N" Then
                    k = k + 1
                    For j = 1 To 27
                        arr(k, j) = Cells(i, j)
                    Next
                End If
            Next
            
            If k > 0 Then Sheets("PHONE").Range("A2").Resize(k, 27) = arr
        End If
    End If
End Sub
 
Upvote 0
Bạn muốn bê nguyên từ sheet Result sang Phone hay chỉ cần vài cột bạn viết chữ bên PHONE?

Code bê nguyên
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i, j, k, lr As Integer, arr
    If Target.Column = 17 Then
        lr = Sheets("RESULT").Range("E" & Rows.Count).End(3).Row
        ReDim arr(1 To lr, 1 To 27)
        Sheets("PHONE").Range("A2:D6500").Clear
        If lr > 1 Then
            For i = 2 To lr
                If Cells(i, 17) = "Y" Or Cells(i, 17) = "N" Then
                    k = k +

Mình chỉ cần vài cột như sheet Phone, vì các cột còn lại mình sẽ làm công thức.
Bạn ơi! code trên chỉ chạy không ổn định, Khi mình xóa "Y" or "N" rồi sheet Phone vẫn còn. Và bạn sữ giúp mình Sheet Phone chạy từ dòng E3 nhé
Cám ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Mình chỉ cần vài cột như sheet Phone, vì các cột còn lại mình sẽ làm công thức.
Bạn ơi! code trên chỉ chạy không ổn định, Khi mình xóa "Y" or "N" rồi sheet Phone vẫn còn. Và bạn sữ giúp mình Sheet Phone chạy từ dòng E3 nhé
Cám ơn!

Code này vậy
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i, j, k, lr As Integer, arr
    If Target.Column = 17 Then
        lr = Sheets("RESULT").Range("E" & Rows.Count).End(3).Row
        ReDim arr(1 To lr, 1 To 27)
        Sheets("PHONE").Range("D3:G6500").Clear
        If lr > 1 Then
            For i = 2 To lr
                If Cells(i, 17) = "Y" Or Cells(i, 17) = "N" Then
                    k = k + 1
                    For j = 5 To 8
                        arr(k, j - 4) = Cells(i, j)
                    Next
                End If
            Next
            
            If k > 0 Then Sheets("PHONE").Range("D3").Resize(k, 27) = arr
        End If
    End If
End Sub
 
Upvote 0
code này vậy
Mã:
private sub worksheet_change(byval target as range)
    dim i, j, k, lr as integer, arr
    if target.column = 17 then
        lr = sheets("result").range("e" & rows.count).end(3).row
        redim arr(1 to lr, 1 to 27)
        sheets("phone").range("d3:g6500").clear
        if lr > 1 then
            for i = 2 to lr
                if cells(i, 17) = "y" or cells(i, 17) = "n" then
                    k = k + 1
                    for j = 5 to 8
                        arr(k, j - 4) = cells(i, j)
                    next
                end if
            next
            
            if k > 0 then sheets("phone").range("d3").resize(k, 27) = arr
        end if
    end if
end sub
mình nhập công thức vào các cột lân cận. Khi sheet phone update dữ liệu thì mất công thưc.
Mã kh của mình dạng text nhưng nó chuyển qua thành dạng số.
Help!
 
Upvote 0
Web KT

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

Back
Top Bottom