hoahuongduong1986
Thành viên thường trực
- Tham gia
- 14/11/18
- Bài viết
- 346
- Được thích
- 40
Bạn kiểm tra nhé:Kính gửi anh chị và các bạn,
Em muốn lọc với điều kiện Ma_hang khác 002 và sau khi lọc xong thì bỏ lọc tại sheet1. Em đã làm code nhưng kết quả không lọc được. ANh chị xem giúp em với ạ.
Option Explicit
Sub Loc()
Sheet2.Range("A1").CurrentRegion.Clear
Sheet1.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet1.Range("J1:J2"), CopyToRange:=Sheet2.Range("A1").Resize(, Sheet1.Range("A1").CurrentRegion.Columns.Count), Unique:=False
End Sub
Em cảm ơn chị OT !Bạn kiểm tra nhé:
View attachment 263255
Xin lỗi, bạn sửa J2 "002" thành "<>002" để lọc điều kiện khác 002.
Mã:Option Explicit Sub Loc() Sheet2.Range("A1").CurrentRegion.Clear Sheet1.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet1.Range("J1:J2"), CopyToRange:=Sheet2.Range("A1").Resize(, Sheet1.Range("A1").CurrentRegion.Columns.Count), Unique:=False End Sub
Thử xóa J1, trong J2 điền công thức bên dưới rồi chạy lại code:Em cảm ơn chị OT !
Vẫn không được chị ạ.
+ Nếu em để tại J2 là "<>002" như chị bảo thì ra trắng
+ Nếu em để tại J2 là <>002 thì nó ra tất cả như sheet gốc.
Không được anh ạ.Thử xóa J1, trong J2 điền công thức bên dưới rồi chạy lại code:
=AND(LEFT(G2,3)<>"002",G2<>"")
.
Bạn có cách gì không giúp mình với bạn, nhìn không khó mà không được?Không được anh ạ.
Mình thấy cách của anh @Phuocam ra kết quả màBạn có cách gì không giúp mình với bạn, nhìn không khó mà không được?
Thế đoạn này từ CriteriaRange:=Sheet1.Range("J1:J2") thành CriteriaRange:=Sheet1.Range("J2") à anh. EM đã thử mà vẫn không được ạ.Mình thấy cách của anh @Phuocam ra kết quả mà
Code bài #2 và điều kiện của bài #4Thế đoạn này từ CriteriaRange:=Sheet1.Range("J1:J2") thành CriteriaRange:=Sheet1.Range("J2") à anh. EM đã thử mà vẫn không được ạ.
Với cách của em em sheet tại J1 là 002 ở dạng text và đặt nó là T (Dim T as string)
T = Cells(1, "J").Value
Và Criteria1:="<>T"
NHưng vẫn không được.
Mình chỉ áp dụng theo cái bài của anh trên kia nhéThế đoạn này từ CriteriaRange:=Sheet1.Range("J1:J2") thành CriteriaRange:=Sheet1.Range("J2") à anh. EM đã thử mà vẫn không được ạ.
Với cách của em em sheet tại J1 là 002 ở dạng text và đặt nó là T (Dim T as string)
T = Cells(1, "J").Value
Và Criteria1:="<>T"
NHưng vẫn không được.
Em cứ nghĩ cái G2 là anh ý lấy nó vì nó có mã 002, nhưng dùng mới hiểu ý nghĩa. Nhưng Nó không lấy được cái Dòng tổng cộng ạ. Và ở đây em đã dùng SUbtotal 9 để nó cộng dòng ẩn.Mình chỉ áp dụng theo cái bài của anh trên kia nhé
Thế thì điền cái gì bất kì vào cái cột G dòng tổng cộng ấyEm cứ nghĩ cái G2 là anh ý lấy nó vì nó có mã 002, nhưng dùng mới hiểu ý nghĩa. Nhưng Nó không lấy được cái Dòng tổng cộng ạ. Và ở đây em đã dùng SUbtotal 9 để nó cộng dòng ẩn.
+ Làm sao để lấy được thêm dòng tổng cộng ạ
+ Nếu vẫn dùng theo các của em làm thì làm sao ạ. Chỗ điều kiện này làm thế nào ạ. EM đã làm thử trong code mà vẫn không được.
Không biết có phải do máy em không. Em đã để chế độ automatic và còn thêm đoạn này Application.Calculation = xlCalculationAutomatic mà chỗ ô Tổng khi lọc nó vẫn tính cả, mà không phải tính các dòng lọc. Phải bấm F2 và Enter nó mới tínhThế thì điền cái gì bất kì vào cái cột G dòng tổng cộng ấy
Bạn tham khảo thêm:Em cứ nghĩ cái G2 là anh ý lấy nó vì nó có mã 002, nhưng dùng mới hiểu ý nghĩa. Nhưng Nó không lấy được cái Dòng tổng cộng ạ. Và ở đây em đã dùng SUbtotal 9 để nó cộng dòng ẩn.
+ Làm sao để lấy được thêm dòng tổng cộng ạ
+ Nếu vẫn dùng theo các của em làm thì làm sao ạ. Chỗ điều kiện này làm thế nào ạ. EM đã làm thử trong code mà vẫn không được.
Sub Loc_2()
Dim rng As Range, rU As Range, i As Long, r As Long, k As Long, c As Long
Sheet2.Range("A1").CurrentRegion.Clear
Set rng = Sheet1.Range("A1")
c = rng.CurrentRegion.Columns.Count
r = rng.CurrentRegion.Rows.Count
Set rU = rng.Resize(, c)
For i = 2 To r - 1
If rng(i, 7).Value <> Sheet1.Range("J2") Then ' điều kiện khác với dữ liệu nhập vào ô J2 của sheet data
Set rU = Union(rU, rng(i).Resize(, c))
k = k + 1
End If
Next i
rU.Copy Sheet2.Range("A1")
rng(r).Resize(, c).Copy Sheet2.Range("A" & k + 2)
Sheet2.Range("C" & k + 2) = "=SUBTOTAL(9,C2:C" & k + 1 & ")"
End Sub
Em xin cảm ơn các anh chị đã giúp đỡ ạ!" Tổng khi lọc "