Loại bỏ các bản sao trong Excel VBA
Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA loại bỏ các bản sao.
Tình huống:
Trong cột A chúng ta có 10 số. Chúng tôi muốn xóa các số trùng lặp khỏi những số này và đặt các số duy nhất vào cột B.
-
Đầu tiên, chúng tôi khai báo bốn biến. toAdd kiểu Boolean, uniqueNumbers kiểu Integer, i kiểu Integer và j kiểu Integer.
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
-
Tiếp theo, chúng ta viết số đầu tiên của cột A vào cột B vì số đầu tiên luôn là ‘duy nhất’.
Cells(1, 2).Value = Cells(1, 1).Value
-
Chúng tôi khởi tạo hai biến. Chúng tôi vừa thêm một số vào cột B, vì vậy chúng tôi khởi tạo UniqueNumbers với giá trị 1. Chúng tôi đặt thành Thêm thành Đúng với giả định rằng số tiếp theo cũng cần được thêm (tất nhiên điều này không nhất thiết phải đúng).
uniqueNumbers = 1 toAdd = True
Chúng ta cần xác định xem số thứ hai có phải là ‘duy nhất’ hay không. Điều này có thể được thực hiện một cách rất dễ dàng. Chỉ khi số chưa có trong cột B, số thứ hai cần được thêm vào cột B.
-
Chúng ta cũng cần kiểm tra điều này cho số thứ ba, số thứ tư, v.v. Chúng tôi bắt đầu một vòng lặp For Next cho điều này.
For i = 2 To 10
-
Bây giờ đến phần quan trọng nhất của chương trình. Nếu số thứ hai bằng một trong các số trong cột B (cho đến nay chúng tôi chỉ có một số duy nhất), chúng tôi đặt thành Thêm thành Sai vì trong trường hợp này chúng tôi không muốn thêm số này! (nó không phải là ‘duy nhất’). Hiện tại, uniqueNumbers vẫn bằng 1, nhưng uniqueNumbers có thể là một danh sách toàn bộ. Để kiểm tra toàn bộ danh sách này, chúng ta cần một vòng lặp For Next khác. Một lần nữa: nếu số chúng ta muốn thêm bằng một trong các số trong danh sách này, toAdd sẽ được đặt thành False và số đó sẽ không được thêm vào. Thêm các dòng mã sau:
For j = 1 To uniqueNumbers If Cells(i, 1).Value = Cells(j, 2).Value Then toAdd = False End If Next j
-
Chỉ khi toAdd vẫn là True và không được đặt thành False, Excel VBA cần thêm số vào cột B. Đồng thời, chúng tôi tăng số uniqueNumbers lên 1 vì chúng tôi hiện có thêm một số duy nhất. Các dòng mã sau đây hoàn thành công việc:
If toAdd = True Then Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value uniqueNumbers = uniqueNumbers + 1 End If
-
Cuối cùng, chúng tôi đặt thành Thêm thành Đúng giả sử số tiếp theo (số thứ ba) cần được thêm vào. Một lần nữa điều này không nhất thiết phải đúng.
toAdd = True
-
Đừng quên đóng vòng lặp.
Next i
-
Đặt macro của bạn vào một nút lệnh và kiểm tra nó.
Kết quả: