Hoàng Văn Tài
Hoàng Văn Tài
Thảo luận 7 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 459 lượt xem

Mình có thử Remove Duplicates trong Range A2A11 bằng đoạn code ActiveSheetRange("A2A11")RemoveDuplicates

- Mình có thử Remove Duplicates trong Range A2:A11 bằng đoạn code: ActiveSheet.Range("A2:A11").RemoveDuplicates => có chứa phương thức rồi nhưng không chạy được macro
- Khi mình ra ngoài record macro khác để kiểm tra code thì trong code lại chứa thuộc tính Columns và Header
- Mình thêm 2 thuộc tính này vào đoạn code ban đầu mình viết thì quả thật macro chạy được
=> Vậy cho mình hỏi là: Trong đoạn code mình viết ban đầu có chứa phương thức (hành động) cho đối tượng rồi nhưng tại sao lại vẫn cần thêm cả thuộc tính cho nó nữa thì macro mới chạy? (Vì như theo khái niệm lập trình hướng đối tượng thì đối tượng chỉ cần chỉ rõ 1 trong 2 phương thức hoặc thuộc tính)
Thảo luận 7 câu trả lời
Lượt xem 459 lượt xem
Vỗ tay vỗ tay
Hoàng Văn Tài 16:08 - Aug 04, 2020
Việc sinh ra columns và header giải thích như sau:
- code đầy đủ của remove duplicates là: range(Vùng).RemoveDuplicates, cột thứ mấy, có dòng tiêu đề không.
Do đó nếu remove duplicate trên 1 vùng nhiều hơn 1 cột thì bạn sẽ thấy code đầy đủ.
Nếu chỉ có ActiveSheet.Range("A2:A11").RemoveDuplicates mà không rõ cột nào, không rõ dòng tiêu đề hay không thì là code thiếu.
Thường phải khai báo đầy đủ thì code chạy mới chính xác.
Vỗ tay vỗ tay
Hoàng Văn Tài 16:08 - Aug 04, 2020
mình cảm ơn ạ
Vỗ tay vỗ tay
Hoàng Văn Tài 06:07 - Jul 15, 2021

mình không viết được đoạn code này. ActiveSheet.Range("A2:A11").RemoveDuplicates thêm Columns và Header

Nhờ admin hỗ trợ viết lại đoạn code đầy đủ giúp.

Câu hỏi thứ 2 là làm sao để biết có các thuộc tính Columns, header mà thêm vào cho đầy đủ?

Vỗ tay vỗ tay
Hoàng Văn Tài 09:07 - Jul 15, 2021

Đoạn code removeDuplicates này có được nhờ việc record macro thôi bạn. Thao tác là:

- bấm record macro

- chọn danh sách cần lọc bỏ giá trị trùng lặp

- vào thẻ Data > chọn remove duplicates > thực hiện thiết lập rồi bấm ok

tùy theo vùng danh sách này có dòng tiêu đề hay không thì chọn My data has header

- bấm stop recording

Như vậy đã có code đầy đủ rồi. Việc còn lại là sửa code để dùng thôi.

code mẫu:

Sub Xoa_DuLieu_TrungLap_MotCot()
     'Khai báo các biến sử dụng
     Dim DongDau As Long, DongCuoi As Long
     Dim TenCot As String
          DongDau = 1
          DongCuoi = Sheets("Data").Range("C" & Rows.Count).End(xlUp).Row
          TenCot = "C"
     'Lệnh xóa dữ liệu trùng lặp, nếu không bao gồm dòng tiêu đề thì Header:=xlNo
     Sheets("Data").Range(TenCot & DongDau & ":" & TenCot & DongCuoi).RemoveDuplicates _
          Columns:=1 , _
          Header:=xlYes
End Sub

với vùng A2:A11 thì các biến sẽ sửa là:

DongDau = 2

TenCot = "A"

DongCuoi = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

Vỗ tay vỗ tay
Hoàng Văn Tài 09:07 - Jul 15, 2021

Option Explicit

Sub Ghimacro()

    'Không cho có Header

    ActiveSheet.Range("$D$1:$D$7").RemoveDuplicates Columns:=1, Header:=xlNo

   ' có Header

    ActiveSheet.Range("$E$1:$E$7").RemoveDuplicates Columns:=1, Header:=xlYes

End Sub


Vỗ tay vỗ tay
Hoàng Văn Tài 12:07 - Jul 15, 2021

mình cảm ơn Tuấn Ba và Ad

Vỗ tay vỗ tay
Hoàng Văn Tài 14:07 - Jul 15, 2021

chúc bạn học tốt cùng gitiho

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông