Chỉ là đánh số TT, dể thôi màMacro đó rất hay và tác dụng với tôi đó.
Tuy nhiên khi lọc ra danh sách mới thì cột số thứ tự tôi cần lần lượt chạy từ 1 đến hết - Bạn giúp tôi nhé! (trong mẫu là số thứ tự tương ứng ở sheet 1).
Sub Trichloc()
Dim i As Long
Application.ScreenUpdating = False
Sheets("hsg").[A6:G1000].Clear
Sheets("HSTT").[A6:G1000].Clear
With Sheets("lop").[A6].CurrentRegion
For i = 1 To 2
.AutoFilter 4, Choose(i, "G", "K"): .AutoFilter 5, "T"
.SpecialCells(12).Copy
With Sheets(Choose(i, "hsg", "HSTT")).[A6]
.PasteSpecial
If .CurrentRegion.Rows.Count > 1 Then
.CurrentRegion.Resize(, 1).SpecialCells(2, 1).Value = Evaluate("ROW(R:R)")
End If
End With
Next i
End With
Sheets("lop").AutoFilterMode = False
Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("TB") & """,2)")
Application.ScreenUpdating = True
End Sub
Bạn có để ý sau khi chạy code, có 1 câu thông báo hiện ra... Và bạn có thấy rằng nó là TIẾNG VIỆT CÓ DẤU đàng hoàng ---> Nó được tạo ra nhờ câu lệnh trên đấyCái dòng này trong code đó có ý nghĩa gì vậy bạn?
Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("TB") & """,2)")
Nếu có báo lổi chẳng qua là bạn copy thiếu mất name ---> Trong file gốc của tôi, ngoài code ra còn có name, vào menu Insert\Name\Define sẽ thấy ---> Name này dùng để hiển thị MsgBox tiếng Việt ---> Nếu bạn không thích có thể xóa đoạn.
Tôi đã Copy lại code sang một file khác thử thực hiện nhưng máy báo lỗi. Các bạn kiểm tra giúp xem tại sao nhé!
Nó dùng để copy những dòng nào đang hiện sau khi AutoFilter ---> Tương đương với việc bạn bấm Ctrl + G, chọn Special rồi chọn Visible cells onlyThế còn số 12 trong đoạn .SpecialCells(12).Copy có ý nghĩa gì vậy bạn?
Nếu như vậy thì khi thay số 12 thành số khác nó sẽ có tác dụng khác đúng không bạn?Nó dùng để copy những dòng nào đang hiện sau khi AutoFilter ---> Tương đương với việc bạn bấm Ctrl + G, chọn Special rồi chọn Visible cells only
Đúng vậy!Nếu như vậy thì khi thay số 12 thành số khác nó sẽ có tác dụng khác đúng không bạn?
Ví dụ: Số 11 = Last Cell
Số 10 = Dependents, ....
Cảm ơn các bạn vì bài viết này, các bạn có thể cho mình hỏi một tí được không. Mình đang mới bắt đầu tập tành VBA nên chưa rành lắm. Giả sử mình có cột mã tuyến được phân biệt bởi các tỉnh(VD tỉnh Quảng Trị giá trị trong cột có chữ QTI, Huế là TTH) và một cột là Loại cáp VD(cáp đồng 8x2x0.5, cáp quang 12 Fo). Mình muốn viết code lọc dữ liệu giả sử tỉnh Quảng Trị theo loại cáp gì đó và cho ra kết quả của giá trị tổng sau khi lọc. Mong các bạn giúp đỡ rất nhiều
Đương nhiên không thể gõ tiếng Việt vào cửa sổ VBE rôi, vì thế phải dùng tí xảo thuậtCode bạn ndu viết giùm theo nội dung hôm trước thì OK rồi. Tuy nhiên, khi mà học lực của HS chuyển thành tiếng việt có dấu thì lại không lọc được. Bạn xem và góp ý giùm cách xử lý xem nhé!
Đương nhiên phải dùng tí xảo thuật
(1)
.AutoFilter 4, Choose(i, "Gi" & ChrW(7887) & "i", "K"): .AutoFilter 5, "T"
ChrW(7887) tương đương với chử ỏ
(2)
Nếu rối quá thì mấy điều kiện lọc tiếng Việt này ta gõ trực tiếp lên cell luôn cho xong!
Ví dụ:
- Gõ chử Giỏi vào cell M1, chử K vào cell M2
- Sửa lại code thành:
.AutoFilter 4, Choose(i, [M1], [M2]): .AutoFilter 5, "T"
Có thể dùng " * " thay thế như sauĐương nhiên không thể gõ tiếng Việt vào cửa sổ VBE rôi, vì thế phải dùng tí xảo thuật
Code của bạn là:
.AutoFilter 4, Choose(i, "Giái", "K"): .AutoFilter 5, "T"
Bạn sửa lại thành:
.AutoFilter 4, Choose(i, "Gi" & ChrW(7887) & "i", "K"): .AutoFilter 5, "T"
ChrW(7887) tương đương với chử ỏ
Nếu thấy rắc rối quá thì mấy điều kiện lọc tiếng Việt này ta gõ trực tiếp lên cell luôn cho xong!
Ví dụ:
- Gõ chử Giỏi vào cell M1, chử K vào cell M2
- Sửa lại code thành:
.AutoFilter 4, Choose(i, [M1], [M2]): .AutoFilter 5, "T"
.AutoFilter 4, Choose(i, "Gi*", "K"): .AutoFilter 5, "T"
.AutoFilter 6, Choose(i, "HS Gi*", "HSTT")
tôi có việc muốn nhờ các pro giúp đỡ cho nhé!
tôi đã post ví dụ kèm theo rồi mong các pro trả lời càng sớm càng tốt!
thanks a lot
Option Explicit
Sub AutoShape1_Click()
Dim Jj As Integer, Aa, Bb, Cc, Xx, yY, Zz, eRw As Long, Nn
eRw = [b65500].End(xlUp).Row + 1
Jj = 1
Do
Do While Jj < eRw ' 5000'
For nN = 1 To eRw '5000'
Aa = Cells(Jj, 4)
Bb = Cells(Jj, 5)
Cc = Cells(Jj, 6)
Xx = Cells(nN, 12)
yY = Cells(nN, 13)
Zz = Cells(nN, 14)
If ((Aa - Xx) ^ 2 + (Bb - yY) ^ 2 + (Cc - Zz) ^ 2) = 4 Then
Cells(Jj, 16) = Cells(Jj, 2)
Cells(Jj, 17) = Cells(nN, 10)
End If
Next nN
Jj = Jj + 1
Loop
Loop While Aa = ""
End Sub