Tạo Macro trích lọc dữ liệu

  • Thread starter Thread starter ST-Lu!
  • Ngày gửi Ngày gửi
Liên hệ QC
Cần xử lí tiếp

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).
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é!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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).
Chỉ là đánh số TT, dể thôi mà
Sửa code lại thành:
PHP:
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
 

File đính kèm

Upvote 0
Ý nghĩa của code

Cái dòng này trong code đó có ý nghĩa gì vậy bạn?

Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("TB") & """,2)")
 
Upvote 0
Cái dòng này trong code đó có ý nghĩa gì vậy bạn?

Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("TB") & """,2)")
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 đấy
Bạn tham khảo cách làm tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=22396
 
Upvote 0
Ý nghĩa số 12

Thế còn số 12 trong đoạn .SpecialCells(12).Copy có ý nghĩa gì vậy bạn?
 
Upvote 0
.
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ế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
Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("TB") & """,2)")
là hết báo lổi ngay
---------------------------
Thế còn số 12 trong đoạn .SpecialCells(12).Copy có ý nghĩa gì vậy 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
 
Upvote 0
có ai biết cách giới hạn số ký tự trong 1 ô excel không vậy??
 
Upvote 0
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
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, ....
Bạn giúp tôi giải thích về các dòng còn lại trong Special được không vậy?
 
Lần chỉnh sửa cuối:
Upvote 0
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, ....
Đúng vậy!
Mở hộp Goto ra, bấm Special thì:
-SpecialCells(1) <===> Comments ---> Chọn những cell có chứa Comment
-SpecialCells(2) <===> Contants ---> Chọn những cell có chứa nội dung
-SpecialCells(3) <===> Formulas ---> Chọn những cell có chứa công thức
vân... vân...
Tuy nhiên có 1 vài tùy chọn không theo quy luật (ví dụ là CurrentRegion) ---> Bạn tự thí nghiệm và Record macro để biết thêm chi tiết
 
Lần chỉnh sửa cuối:
Upvote 0
nhờ bài viết của bạn hỏi ké chút ! tìm mãi chưa thấy topic phù hợp câu hỏi của mình. Vả lại mình là thành viên mới nên chưa lập chủ đề riêng được

Mình cũng mụốn tạo 1 macro tự lọc 1 điều kiện đã đặt ra. Ví dụ: Ctrl + T là tự lọc cột vị trí bắt đầu bằng D (begin = D, Ctrl + Q là tự lọc cột tạm thu tiền có chứa tên (contain = minh) <== cơ bản là đã ghi thao tác thành công

Tôi dùng Excel 2000 thì tạo macro, lưu vào Normat.dot thì mở bất kỳ workbook nào cũng xài được.
Nhưng khi đến máy chỗ làm việc, lại cài Excel 2003 thì macro chỉ có thể tác động vào 1 file mình đã tạo (mỗi lần muốn làm đến file khác, tôi đành chọn 2 giái pháp.. củ chuối:
1. copy nội dung file mới vào file mẫu (file có chứa macro mình tạo ra)
2. nhập Import file macro.bas vào file mới

Vậy có cách nào để macro đó có sẵn khi mở bất kỳ file Excel 2003 nào không?
 
Upvote 0
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
 
Upvote 0
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

Bạn nói vậy không ai hiểu đâu, gửi file có một ít dữ liệu sẽ dễ hiểu và giải đáp cho bạn hơn
 
Upvote 0
Code có lỗi gì?

Code 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é!
 

File đính kèm

Upvote 0
Code 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 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"
 
Lần chỉnh sửa cuối:
Upvote 0
Chờ phương án (3) của Vua Names!

Đươ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"


(3) . . . (Vua về Names thử cho vô Names xem sao?!)
 
Upvote 0
Đươ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"

Có thể dùng " * " thay thế như sau
PHP:
      .AutoFilter 4, Choose(i, "Gi*", "K"): .AutoFilter 5, "T"
Nhưng như vậy vẫn bị sót trường hợp HSTT: HS có HL là K + HK là K không được lọc
Vì HSG = HL là Giỏi + HK là T;Tiếp đến HSTT = HL là K trở lên + HK là K trở lên

Thế này thì chuẩn hơn
PHP:
      .AutoFilter 6, Choose(i, "HS Gi*", "HSTT")
 
Lần chỉnh sửa cuối:
Upvote 0
Sorry các pro

tôi có việc muốn nhờ các pro nhưng không thể post bài mới nên đành chui vào đây post bài tạm vậy! 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@$@!^%
 

File đính kèm

Upvote 0
Bạn thử với macrro này xem sao:

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@$@!^%
PHP:
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
 
Upvote 0
Theo đoạn code trên thì chỉ thay đổi phần xác định dòng cuối.
Như vậy thì thời gian tính toán vẫn không thay đổi mấy,
có thuật toán nao rut ngắn được thời gian nữa kô pro?
 
Upvote 0
Xin giúp đỡ về Lọc dữ liệu trong một bản ( cụ thể về lịch giảng dạy của giáo viên trong tuần)
Toi chắc sắp điên đầu vì nó mất!+-+-+-++-+-+-+
Ai giúp tôi với! Xin cam ơn rất nhiều
Email: phandoathiet@gmail.com-+*/
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom