Dùng dictionary để xoá range tương ứng với giá trị duy nhất được không ah?

Chia sẻ bởi:hands
★★★★★
Quảng cáo

A
B
C
D
E

1
l1c2
l1c3
l1c4
l1c5

2
l2c2
l2c3
l2c4
l2c5

1
a
b
c
e

5
01
412
8543
2198

8
102
731
4932

Dù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 SprinGO phù hợp

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
★★★★★ 5 ★ 1 👤 5 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm