Vấn đề trích lọc dữ liệu bằng VBA

Liên hệ QC

Đình Phán

Thành viên thường trực
Tham gia
23/11/10
Bài viết
232
Được thích
68
Giới tính
Nam
Nghề nghiệp
kt
Chào các anh chị GPE.

Anh chị xem giúp file này em code sai chỗ nào mà kết quả không ra ý muốn
Chỉ đúng với trường hợp mã xuất hiện 01 lần, hai lần trở lên thì sai bét.
Chi tiết file đính kèm

Em cảm ơn!
 

File đính kèm

  • Book1.xls
    39 KB · Đọc: 75
Chào các anh chị GPE.

Anh chị xem giúp file này em code sai chỗ nào mà kết quả không ra ý muốn
Chỉ đúng với trường hợp mã xuất hiện 01 lần, hai lần trở lên thì sai bét.
Chi tiết file đính kèm


Em cảm ơn!
chưa kịp xem code của bạn đâu, nhưng bạn có thể dùng đoạn này nhé
PHP:
Sub TIMKIEM()
Dim Sarr, Arr, i As Long, j As Long, k As Long, Tmp As String
With Sheets("P")
    Sarr = .Range(.[A4], .[A65000].End(xlUp)).Resize(, 6).Value2
End With
ReDim Arr(1 To UBound(Sarr), 1 To 5)
With Sheets("P")
    Tmp = UCase(.[H1])
    For i = 1 To UBound(Sarr)
        If UCase(Sarr(i, 1)) = Tmp Then
            k = k + 1
            For j = 2 To 6
                Arr(k, j - 1) = Sarr(i, j)
            Next
        End If
    Next
        .[J4:N65000].ClearContents
        .[J4].Resize(k, 5).Value = Arr
End With
End Sub
Code cũ bạn sửa thế này
PHP:
Sub TIMKIEM()
Dim Ma As String
Dim RongCuoi As Integer
Dim i As Integer


Ma = Sheets("P").Range("H1").Value
RongCuoi = Sheets("P").Range("A10000").End(xlUp).Row
Sheets("P").Range("J4:N2300").ClearContents


For i = 4 To RongCuoi
    If Cells(i, 1) = Ma Then
        Range(Cells(i, 2), Cells(i, 6)).Copy
        Range("J1000").End(xlUp).Offset(1).PasteSpecial xlPasteFormulasAndNumberFormats
    End If
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn sửa lại Code của bạn 1 chút là được
Mã:
Range("[COLOR=#ff0000][SIZE=4][B]J[/B][/SIZE][/COLOR]1000").End(xlUp).Offset([COLOR=#ff0000][SIZE=4][B]1, 0[/B][/SIZE][/COLOR]).PasteSpecial xlPasteFormulasAndNumberFormats

^^ mà không biết là "RongCuoi" hay "DongCuoi nhỉ?
 
Upvote 0
Chính xác là DongCuoi ạ. Nhưng em cố tình đặt để cho khác biệt. **~**

Bác có thể giải thích giúp em thay đổi thành J1000 lại được không? Vì em có thể chọn bất cứ ô nào sau đó Offset là được mà. (Phải chăng là do phần End(xlUp) đi kèm ạ?

Em cảm ơn!
 
Upvote 0
Chính xác là DongCuoi ạ. Nhưng em cố tình đặt để cho khác biệt. **~**

Bác có thể giải thích giúp em thay đổi thành J1000 lại được không? Vì em có thể chọn bất cứ ô nào sau đó Offset là được mà. (Phải chăng là do phần End(xlUp) đi kèm ạ?

Em cảm ơn!
Đúng là vậy đó, với cả bạn để ý cả cái vòng lặp nữa ý. Dòng cuối cùng có dữ liệu lại copy số lần A, B, C lập lại(xuống 1 dòng). Nếu bạn để thế kia dòng cuối cùng có dữ liệu luôn là là H1 sau dó offset(3,2) nên chỉ được 1 lần
J1000.end(xlup) sẽ được X, X.offset(1,0) xuống 1 dòng là dòng đầu tiên của vùng dữ liệu cần copy.
ví dụ của mã A đi, sau khi bạn được A 1(dữ liệu đầu tiên của A). Nhờ vòng lặp, dòng cuối cùng có dữ liệu giờ lại thành A 1, lại xuống 1 dòng nữa rồi copy được A 2. Giờ A 2 là dòng cuối cùng có dữ liệu, lại xuống 1 dòng được A 3 và tương tự như vậy
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom