Hình như bạn nhầm thì phải, so sánh dử liệu tại cột E sheet VNR với cột H sheet DS mới đúng chứChào các bạn,
Cho mình hỏi công thức lọc giá trị vừa có trong cột G sheet "DS" và cột E của sheet "VNR" vd: S7032825 rồi đưa sang sheet "filter"
Rất mong nhận được sự hỗ trợ của các bạn.
Thanks&Rgds,
Tâm Bình
Mình dùng thêm một số cột phụ được không. Trên cơ sở đó bạn có thể rút ngắn các cột phụ hoặc tạo name động.Chào các bạn,
Cho mình hỏi công thức lọc giá trị vừa có trong cột G sheet "DS" và cột E của sheet "VNR" vd: S7032825 rồi đưa sang sheet "filter"
Rất mong nhận được sự hỗ trợ của các bạn.
Thanks&Rgds,
Tâm Bình
Xong thì có xong, nhưng xem lại danh sách thì rất nhiều mã trùng nhau! Việc này không biết có phải là mong muốn của tác gia không nữa, chúng ta cùng chờ vậy?Nếu thế thì làm như sau:
- Tại sheet Filter, cell D2 bạn gõ vào công thức =COUNTIF(VNR!$E$2:$E$803,DS!H2)
- Cũng đứng tại Sheet Filter, vào menu Data\Filter\Advanced Filter và chọn vùng dử liệu như hình:
* OK 1 nhát là xong!
Option Explicit
Sub TimTrung()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim Rng As Range, Rng0 As Range, Clls As Range, sRng As Range
Dim RwD As Long, RwV As Long
Sheets("Filter").Select
Set Sh1 = Sheets("VNR"): RwV = Sh1.[e65500].End(xlUp).Row
Set Sh2 = Sheets("DS"): RwD = Sh2.[H65500].End(xlUp).Row
If RwV > RwD Then
Set Rng = Sh1.Range(Sh1.[e1], Sh1.[e65500].End(xlUp))
Set Rng0 = Sh2.Range(Sh2.[H1], Sh2.[h65500].End(xlUp))
Else
Set Rng = Sh2.Range(Sh2.[H1], Sh2.[h65500].End(xlUp))
Set Rng0 = Sh1.Range(Sh1.[e1], Sh1.[e65500].End(xlUp))
End If
For Each Clls In Rng0
Set sRng = Rng.Find(Clls.Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
With [B65500].End(xlUp).Offset(1)
.Value = Clls: .Offset(, 1) = Clls.Address
.Offset(, 2) = sRng.Address
End With
End If
Next Clls
End Sub
Cái này dể mà anh! Vì Advanced Filter còn có mục Unique Record Only đấy, check vào là hết trùng ngayXong thì có xong, nhưng xem lại danh sách thì rất nhiều mã trùng nhau! Việc này không biết có phải là mong muốn của tác gia không nữa, chúng ta cùng chờ vậy?
Trong khi chờ hãy ngắm macro của mình:
Sub Loc()
With Sheets("Filter")
.Range("A:A").Clear
Sheets("DS").Range("H1:H10000").AdvancedFilter 2, .Range("D1:D2"), .Range("A1"), True
End With
End Sub
Mình dùng thêm một số cột phụ được không. Trên cơ sở đó bạn có thể rút ngắn các cột phụ hoặc tạo name động.
Đã kiểm tra rất kỹ,dữ liệu của bạn trên 2 sheet VNR và DS chỉ có 200 mã có trên 2 sheet.
(Mình tải file của bạn từ bài #1 ,không biết các file bạn gửi sau này có gì khác không)
Đúng rồi. Trước khi mình lập phải trim tất cả các khoản trắng sau cùng của cả 2 sheet. Có điều chưa có thời gian để dùng Name động (nếu có thể) thì chắc sẽ đơn giản và có thể không cần cột phụ (theo cách của mình)Mình luôn tin tưởng vào công thức, thiếu là do dữ liệu của bạn thừa khoảng trắng, do bạn nhập liệu thiếu cẩn thận.
dữ liệu của bạn tất cả có 77 mã thừa khoảng trắng phía sau.tổng cộng là 277 mã.
Mình e rằng bài này không dùng cột phụ mà dùng công thức mảng thì file không chạy nổi.Đúng rồi. Trước khi mình lập phải trim tất cả các khoản trắng sau cùng của cả 2 sheet. Có điều chưa có thời gian để dùng Name động (nếu có thể) thì chắc sẽ đơn giản và có thể không cần cột phụ (theo cách của mình)
Đương nhiên là vậy! Dử liệu nhiều, công thức mãng có mà chếtMình e rằng bài này không dùng cột phụ mà dùng công thức mảng thì file không chạy nổi.