hoahuongduong1986
Thành viên thường trực
- Tham gia
- 14/11/18
- Bài viết
- 346
- Được thích
- 40
Code chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện đượcKính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
Date Code Name Quantity AB001
làm sao để nó lấy đúng thứ tự, số lượng cột và theo điều kiện này ạCode chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện được
Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.làm sao để nó lấy đúng thứ tự, số lượng cột và theo điều kiện này ạ
Sub Filter()
Dim tmpArr, RslArr
Dim i As Long, EndR As Long, k As Long
Dim Crl As String
With Sheet1
EndR = .Range("B" & Rows.Count).End(xlUp).Row
tmpArr = .Range("A2:E" & EndR).Value
Crl = .Range("J3")
ReDim RslArr(1 To UBound(tmpArr, 1), 1 To 4)
For i = 1 To UBound(tmpArr, 1)
If tmpArr(i, 2) = Crl Then
k = k + 1
RslArr(k, 1) = tmpArr(i, 3)
RslArr(k, 2) = tmpArr(i, 2)
RslArr(k, 3) = tmpArr(i, 5)
RslArr(k, 4) = tmpArr(i, 4)
End If
Next
.Range("I4").Resize(k, 4).Value = RslArr
End With
End Sub
Xin cảm ơn anh đã chỉ dạy ạ !Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.
Rich (BB code):Sub Filter() Dim tmpArr, RslArr Dim i As Long, EndR As Long, k As Long Dim Crl As String With Sheet1 EndR = .Range("B" & Rows.Count).End(xlUp).Row tmpArr = .Range("A2:E" & EndR).Value Crl = .Range("J3") ReDim RslArr(1 To UBound(tmpArr, 1), 1 To 4) For i = 1 To UBound(tmpArr, 1) If tmpArr(i, 2) = Crl Then k = k + 1 RslArr(k, 1) = tmpArr(i, 3) RslArr(k, 2) = tmpArr(i, 2) RslArr(k, 3) = tmpArr(i, 5) RslArr(k, 4) = tmpArr(i, 4) End If Next .Range("I4").Resize(k, 4).Value = RslArr End With End Sub
Thử sử dụng Filter.Kính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
Date Code Name Quantity AB001
Kính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
Advanced filter làm được chuyện này. Code gốc bài 1 chỉ cần sửa 4 tiêu đề kết quả theo thứ tự, và sửa copy_rg = Sheet1.Range("O1:R1")Không thể dùng Advanced Filter được mà phải xử lý bằng VBA với mảng và vòng lặp
Code chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện được
Sub loc_dieu_kien()
Dim rg As Range
Dim criterial_rg As Range
Dim copy_rg As Range
Set rg = Sheet1.Range("A1").CurrentRegion
Set criterial_rg = Sheet1.Range("I2:L3")
Set copy_rg = Sheet1.Range("O1:R1")
rg.AdvancedFilter xlFilterCopy, criterial_rg, copy_rg
End Sub
Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.
Code 2 bài trên không linh hoạt như advanced filter, vì advanced filter có thể cho nhiều điều kiện (cả 4 cột điều kiện) And Or với nhau, chỉ cần thay đổi điều kiện trong vùng điều kiện.Thử sử dụng Filter.
Không cầu toàn bác ơi! Cứ từng bước mà xử lý. Nếu họ thấy vướng tất sẽ la lên, khi đó sẽ xử tiếp.Code 2 bài trên không linh hoạt như advanced filter, vì advanced filter có thể cho nhiều điều kiện (cả 4 cột điều kiện) And Or với nhau, chỉ cần thay đổi điều kiện trong vùng điều kiệ