Dùng dictionary để xoá range tương ứng với giá trị duy nhất được không ah?
A
B
C
D
E1
l1c2
l1c3
l1c4
l1c52
l2c2
l2c3
l2c4
l2c51
a
b
c
e5
01
412
8543
21988
102
731
4932Dùng dictionary có thể làm được việc: Tìm ở cột A, khi thấy giá trị duy nhất thì xoá cả dòng hoặc xoá range tương ứng không ah?
Có thể xóa dễ dàng trên sheet. Nhưng vì bạn muốn tìm hiểu các dùng dic nên mình cũng mạn phép đưa ra hướng giải như sau:
Dùng 2 vòng lặp.
Đầu tiên nạp data vào mảng rng (để tăng tốc code)
rng = Range("A1:E" & Cells(Rows.Count, "A").End(xlUp).Row).Value
Vòng lặp 1: Duyệt qua cột A, nếu xuất hiện lần đầu tiên thì nạp item cho nó là số thứ tự dòng, từ lần 2 thì nạp "x" (hoặc ký tự bất kỳ)
For i = 1 To UBound(rng)
If Not dic.exists(rng(i, 1)) Then
dic.Add rng(i, 1), i
Else
dic(rng(i, 1)) = "x"
End If
Next
Khi vòng lặp kết thúc thì dic đã được nạp xong, các key của nó có 2 loại item: là số (nếu duy nhất) hoặc là ký tự "x" (nếu lặp 2 lần trở lên)
Vòng lặp 2: Duyệt qua key của dic, kiểm tra item có phải là số hay không. Nếu là số thì xóa dòng tương ứng.
For Each key In dic.keys
If IsNumeric(dic(key)) Then Cells(dic(key), 1).Interior.Color = vbYellow
Next
Ở đây tôi test trước bằng cách tô màu cho cell để bạn dễ dàng kiểm tra. Sau đó muốn xóa cell, range hay cả dòng thì tùy ý
VD: Xóa range:
If IsNumeric(dic(key)) Then Cells(dic(key), 1).Resize(1, 5).ClearContents
www.giaiphapexcel.com/diendan/threads/d%C3%B9ng-dictionary-%C4%91%E1%BB%83-xo%C3%A1-range-t%C6%B0%C6%A1ng-%E1%BB%A9ng-v%E1%BB%9Bi-gi%C3%A1-tr%E1%BB%8B-duy-nh%E1%BA%A5t-%C4%91%C6%B0%E1%BB%A3c-kh%C3%B4ng-ah.164271/
Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...
Xem khóa học
Bình luận