Nhờ giúp đỡ về hàm lọc dữ liệu viết bằng VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

tvscarlet

Thành viên mới
Tham gia
15/2/09
Bài viết
2
Được thích
0
Chào các anh chị. Em là newbee, đang chập chững tìm hiểu VBA.
Em có một bài toán sau nhờ các anh chị giúp đỡ ạ.

Nội dung:
Mảng "A11:N". Cần lọc các dòng có dữ liệu ở cột C có giá trị "VP", xóa những dòng có giá trị khác đi và dồn hàng lên. Trong đó cột H:K có chứa công thức, cần giữ lại công thức. File dữ liệu của em khá lớn, hơn 4000 hàng ạ. Em chỉ copy 1 phần vào file ví dụ thôi.

Em đã thử viết công thức như sau, nhưng chạy thử bị báo lỗi #9 ạ. Anh chị nào xem giúp em cách giải quyết được không ạ. Em cám ơn.
Sub LocDuLieu()
Dim WS As Worksheet
Dim dataRange As Range
Dim dataArray As Variant
Dim resultArray() As Variant
Dim resultIndex As Long
Dim i, j As Long
Dim lastRow As Long

Set WS = ThisWorkbook.Worksheets("Sheet1")
lastRow = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row

On Error Resume Next
Set dataRange = WS.Range("A11:N" & lastRow).SpecialCells(xlCellTypeConstants)
On Error GoTo 0

If dataRange Is Nothing Then
MsgBox "KHONG TIM THAY DU LIEU", vbExclamation
Exit Sub
End If

dataArray = dataRange.Value

ReDim resultArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2))
resultIndex = 1

For i = 1 To UBound(dataArray, 1)

If dataArray(i, 3) = "VP" Then
For j = 1 To 14
resultArray(resultIndex, j) = dataArray(i, j)
Next j
resultIndex = resultIndex + 1
End If
Next i

dataRange.ClearContents

If resultIndex > 1 Then
Set dataRange = dataRange.Resize(resultIndex - 1, UBound(dataArray, 2))
dataRange.Value = resultArray
End If

WS.Cells(1, 1).Select
End Sub
 

File đính kèm

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

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

Back
Top Bottom