- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,720
- Giới tính
- Nam
Tôi có 1 thủ tục lọc hàng có điều kiện trong mảng:
Xin vui lòng cho hỏi các vấn đề sau:
1) Sau khi chạy thủ tục, tại sheet LOC_KH có bị trống 1 số hàng (màu vàng) do lọc theo điều kiện, Vậy làm sao để nó dồn lên trên để không bị trống nữa?
2) Code có thể rút gọn được không?
Xin cám ơn rất nhiều!
Mã:
Private Sub CommandButton1_Click()
Dim MyArr1, MyArr2, MyItem As Long, MyRow As Long
LocKhachHang.[A:I].ClearContents
MyArr1 = KhachHang.Range("B5", KhachHang.[B65536].End(xlUp)).Resize(, 15).Value
MyRow = UBound(MyArr1, 1)
ReDim MyArr2(1 To MyRow, 1 To 9)
[COLOR=#006400]'Giữ tiêu đề ở hàng đầu tiên:[/COLOR]
MyArr2(1, 1) = MyArr1(1, 1)
MyArr2(1, 2) = MyArr1(1, 2)
MyArr2(1, 3) = MyArr1(1, 4)
MyArr2(1, 4) = MyArr1(1, 5)
MyArr2(1, 5) = MyArr1(1, 6)
MyArr2(1, 6) = MyArr1(1, 11)
MyArr2(1, 7) = MyArr1(1, 8)
MyArr2(1, 8) = MyArr1(1, 9)
MyArr2(1, 9) = MyArr1(1, 10)
For MyItem = 2 To MyRow - 1
[COLOR=#006400] 'Chuyển dữ liệu từ dưới lên trên:[/COLOR]
If MyArr1(MyRow + 1 - MyItem, 1) <> "" And MyArr1(MyRow + 1 - MyItem, 15) <> "Thanh Lý" Then
MyArr2(MyItem, 1) = MyArr1(MyRow + 1 - MyItem, 1)
MyArr2(MyItem, 2) = MyArr1(MyRow + 1 - MyItem, 2)
MyArr2(MyItem, 3) = MyArr1(MyRow + 1 - MyItem, 4)
MyArr2(MyItem, 4) = MyArr1(MyRow + 1 - MyItem, 5)
MyArr2(MyItem, 5) = MyArr1(MyRow + 1 - MyItem, 6)
MyArr2(MyItem, 6) = MyArr1(MyRow + 1 - MyItem, 11)
MyArr2(MyItem, 7) = MyArr1(MyRow + 1 - MyItem, 8)
MyArr2(MyItem, 8) = MyArr1(MyRow + 1 - MyItem, 9)
MyArr2(MyItem, 9) = MyArr1(MyRow + 1 - MyItem, 10)
End If
Next
If IsArray(MyArr2) Then LocKhachHang.[A1].Resize(UBound(MyArr2, 1), 9).Value = MyArr2
End Sub
Xin vui lòng cho hỏi các vấn đề sau:
1) Sau khi chạy thủ tục, tại sheet LOC_KH có bị trống 1 số hàng (màu vàng) do lọc theo điều kiện, Vậy làm sao để nó dồn lên trên để không bị trống nữa?
2) Code có thể rút gọn được không?
Xin cám ơn rất nhiều!