Hôm nay đang tập giải quyết 1 số vấn đề của Excel và kế toán bằng coding VBA, cần macro trích lọc DM duy nhất, chợt nhớ cái topic hôm nọ về trích lọc danh mục duy nhất nên post lên đây. Có nhiều cách trích lọc sử dụng bằng Filter, công thức, vùng đệm, cách này tớ chỉ dùng thuần túy macro.
Cách làm: Bạn chọn ô nơi bạn bắt đầu nhập giá trị DM duy nhất.
Chọn macro Onlylist, nhập vào địa chỉ danh mục bạn cần trích lọc, nếu đó là 1 name thì bạn nhập tên name, thí dụ MaVL, không thì nhập địa chỉ cụ thể, thí dụ A1:A50.
Code:
Sub OnlyList()
On Error Resume Next
Dim i As Long, dsNguon As Range, dsLoc As Range
Set dsLoc = Range(Selection, Selection.Offset(1000, 0))
Set dsNguon = Range(InputBox("Nhap vao danh sach can trich loc"))
Selection = dsNguon(1)
For i = 1 To dsNguon.Rows.Count
If Not Tontai(dsNguon(i), dsLoc) And dsNguon(i) <> "" Then
Selection.Offset(1, 0).Select
Selection = dsNguon(i)
End If
Next i
End Sub
Function Tontai(Giatri, List As Range)
Dim i As Long
Tontai = False
For i = 1 To List.Rows.Count
If List(i) = "" Then
Exit Function
ElseIf Giatri = List(i) Then
Tontai = True
Exit Function
End If
Next i
End Function
Lỗi bác Duyệt nói tớ cũng thấy 2 chỗ, đó là cố định kiểu biến Giatri as String là tiêu, thứ 2 là khi macro Onlylist gặp lỗi thì ...
Bác Duyệt đúng là cao thủ, bởi thế tui quyết chí bái bác làm thầy dạy VBA.
Cách làm: Bạn chọn ô nơi bạn bắt đầu nhập giá trị DM duy nhất.
Chọn macro Onlylist, nhập vào địa chỉ danh mục bạn cần trích lọc, nếu đó là 1 name thì bạn nhập tên name, thí dụ MaVL, không thì nhập địa chỉ cụ thể, thí dụ A1:A50.
Code:
Sub OnlyList()
On Error Resume Next
Dim i As Long, dsNguon As Range, dsLoc As Range
Set dsLoc = Range(Selection, Selection.Offset(1000, 0))
Set dsNguon = Range(InputBox("Nhap vao danh sach can trich loc"))
Selection = dsNguon(1)
For i = 1 To dsNguon.Rows.Count
If Not Tontai(dsNguon(i), dsLoc) And dsNguon(i) <> "" Then
Selection.Offset(1, 0).Select
Selection = dsNguon(i)
End If
Next i
End Sub
Function Tontai(Giatri, List As Range)
Dim i As Long
Tontai = False
For i = 1 To List.Rows.Count
If List(i) = "" Then
Exit Function
ElseIf Giatri = List(i) Then
Tontai = True
Exit Function
End If
Next i
End Function
Lỗi bác Duyệt nói tớ cũng thấy 2 chỗ, đó là cố định kiểu biến Giatri as String là tiêu, thứ 2 là khi macro Onlylist gặp lỗi thì ...
Bác Duyệt đúng là cao thủ, bởi thế tui quyết chí bái bác làm thầy dạy VBA.
Sửa lần cuối: