Có thể ai đó vui lòng cung cấp cho tôi một số gợi ý về cách giải quyết vấn đề sau:VBA, xóa các bản sao khỏi mảng
Giả sử tôi có khối dữ liệu trong Excel 2010, 100 hàng theo 3 cột.
Cột C chứa một số bản sao, nói rằng nó bắt đầu như 1,1,1 2,3,4,5, ....., 97,98
Sử dụng VBA, tôi muốn loại bỏ các hàng song song, theo cột C, để tôi bị bỏ lại với 1,2,3, ....., 97, 98, tức là chỉ 98 hàng và 3 cột.
Tôi biết có một nút tôi có thể bấm trong Excel 2010 để làm điều đó nhưng tôi muốn làm điều đó trong VBA (vì tôi đã thử điều này và vì lý do nào đó, inteferes với phần còn lại của mã của tôi sau đó và đưa ra không chính xác các kết quả).
Hơn nữa, tôi muốn làm điều đó trong mảng, sau đó dán kết quả trên bảng tính, chứ không phải là phương pháp như Application.Worksheetfunction.countif (.....
Vì vậy, một cái gì đó như:
.Dim myarray() as Variant
myarray=cells(1,1).Currentregion.value
Dim a as Long
For a=1 to Ubound(myarray,1)
'something here to
Next a
Điều này xóa các hàng thực tế từ trang tính, trong khi câu hỏi là để loại bỏ các bản sao trong VBA.Thêm bất kỳ xóa hàng nào cũng luôn luôn xảy ra từ dưới lên, để tránh bỏ qua các hàng – brettdj
@brettdj Cả hai bit mã sẽ hoạt động để loại bỏ các bản sao. Người hỏi muốn làm điều đó trong VBA, tốt hơn là với các mảng (trong trường hợp này người đó có thể dễ dàng sửa đổi vòng lặp để lặp qua các hàng của mảng thay vì một dãy, sau đó chỉ thêm các phần tử duy nhất vào một mảng riêng biệt). Nếu bạn nhìn vào mã, bạn sẽ thấy rằng xóa hàng đi từ dưới lên ('rowCount' được giảm dần). :) – Zairja
Vâng câu hỏi có tiêu đề * VBA, loại bỏ các bản sao từ mảng *. Bạn làm cho một điểm tốt rằng mã của bạn không đi theo cách bạn sử dụng '.Count' mặc dù trong trường hợp này người hỏi có thể cần phải xác định nếu sự xuất hiện đầu tiên nên được giữ ở đầu hoặc botttom. – brettdj