Nhờ các bác hỗ trợ giúp code VBA{triết xuất dữ liệu}

Liên hệ QC

khkkh

Thành viên mới
Tham gia
29/5/12
Bài viết
37
Được thích
1
Mình có file dữ liệu , code VBA bị lỗi sau nhờ mọi người hỗ trợ.*(file đính kèm)
Lỗi "
- triết xuất dữ liệu -> tạo sang 1 sheet mới nhưng mất phần dòng tiêu đề ở sheet gốc.
-ở cột cần triết xuất thì nếu không có dữ liệu liền nhau thì nó không triết xuất được
->( code mình muốn là dòng nào có dữ liệu thì phải triết xuất , không có dữ liệu thì thôi)
Thanks mọi người.

Sub TrietXuat() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Data Plan") Application.ScreenUpdating = False 'Coppy và remove duplicate de lay cac trang thai ws.Columns(12).Copy ws.Columns(22).PasteSpecial xlPasteValues ws.Range("V2").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes 'ket thuc loc cac trang thai 'Loc cac trang thai va copy Dim i As Integer Dim nws As Worksheet Dim startcell As Range Set startcell = ws.Range("A2") i = 3 While (ws.Cells(i, 22) <> "") 'tao sheet moi o cuoi Worksheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set nws = ActiveSheet nws.Name = ws.Cells(i, 22) ws.Select 'filter startcell.CurrentRegion.AutoFilter Field:=12, Criteria1:=ws.Cells(i, 22) startcell.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy nws.Range("A1").PasteSpecial nws.Cells.EntireColumn.AutoFit ws.Select startcell.AutoFilter i = i + 1 Wend Application.ScreenUpdating = True startcell.Select ws.Columns(22).Delete MsgBox "DA HOAN THANH" End Sub Sub del_sheet() Dim ws As Worksheet Dim iws As Worksheet Application.DisplayAlerts = False Set ws = ThisWorkbook.Sheets("Data Plan") Set ws = ThisWorkbook.Sheets("Drop") For Each iws In ThisWorkbook.Sheets If iws.Name <> ws.Name Then iws.Delete End If Next Application.DisplayAlerts = True End Sub Sub saveAndclose() ThisWorkbook.Save ThisWorkbook.Close End Sub
 

File đính kèm

  • Triết xuất (TY & TV) - Copy.xlsm
    76.8 KB · Đọc: 12
Lần chỉnh sửa cuối:
Mình có file dữ liệu , code VBA bị lỗi sau nhờ mọi người hỗ trợ.*(file đính kèm)
Lỗi "
- triết xuất dữ liệu -> tạo sang 1 sheet mới nhưng mất phần dòng tiêu đề ở sheet gốc.
-ở cột cần triết xuất thì nếu không có dữ liệu liền nhau thì nó không triết xuất được
->( code mình muốn là dòng nào có dữ liệu thì phải triết xuất , không có dữ liệu thì thôi)
Thanks mọi người.

Sub TrietXuat() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Data Plan") Application.ScreenUpdating = False 'Coppy và remove duplicate de lay cac trang thai ws.Columns(12).Copy ws.Columns(22).PasteSpecial xlPasteValues ws.Range("V1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes 'ket thuc loc cac trang thai 'Loc cac trang thai va copy Dim i As Integer Dim nws As Worksheet Dim startcell As Range Set startcell = ws.Range("A2") i = 3 While (ws.Cells(i, 22) <> "") 'tao sheet moi o cuoi Worksheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set nws = ActiveSheet nws.Name = ws.Cells(i, 22) ws.Select 'filter startcell.CurrentRegion.AutoFilter Field:=12, Criteria1:=ws.Cells(i, 22) startcell.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy nws.Range("A1").PasteSpecial nws.Cells.EntireColumn.AutoFit ws.Select startcell.AutoFilter i = i + 1 Wend Application.ScreenUpdating = True startcell.Select ws.Columns(22).Delete MsgBox "DA HOAN THANH" End Sub Sub del_sheet() Dim ws As Worksheet Dim iws As Worksheet Application.DisplayAlerts = False Set ws = ThisWorkbook.Sheets("Data Plan") Set ws = ThisWorkbook.Sheets("Drop") For Each iws In ThisWorkbook.Sheets If iws.Name <> ws.Name Then iws.Delete End If Next Application.DisplayAlerts = True End Sub Sub saveAndclose() ThisWorkbook.Save ThisWorkbook.Close End Sub
Không hiểu ý định mong muốn của bạn lắm nhưng hãy thử sửa Criteria1:=ws.Cells(i, 22).Value trong code xem đúng ý đồ của bạn chưa
Bài đã được tự động gộp:

À còn mất dòng tiêu đề là do AutoFilter xong cái dòng tiêu đề của bạn không có trong điều kiện nha
 
Upvote 0
. Bạn tham khảo
 

File đính kèm

  • GPE_Lọc.xlsm
    74 KB · Đọc: 8
Upvote 0
Không hiểu ý định mong muốn của bạn lắm nhưng hãy thử sửa Criteria1:=ws.Cells(i, 22).Value trong code xem đúng ý đồ của bạn chưa
Bài đã được tự động gộp:

À còn mất dòng tiêu đề là do AutoFilter xong cái dòng tiêu đề của bạn không có trong điều kiện nha
-Ý MÌNH LÀ CODE TRIẾT XUẤT MÌNH BỊ SAI DẪN TỚI KHI TRIẾT XUẤT THÌ KHÔNG CÓ DÒNG TIÊU ĐỀ.
-CỘT CẦN TRIẾT XUẤT -> CHỈ TRIẾT XUẤT DÒNG CÓ DỮ LIỆU.
 
Upvote 0
-Ý MÌNH LÀ CODE TRIẾT XUẤT MÌNH BỊ SAI DẪN TỚI KHI TRIẾT XUẤT THÌ KHÔNG CÓ DÒNG TIÊU ĐỀ.
-CỘT CẦN TRIẾT XUẤT -> CHỈ TRIẾT XUẤT DÒNG CÓ DỮ LIỆU.
Đọc Triết Xuất cứ tưởng làm bên pha chế hay hóa chất gì không
 
Upvote 0
-Ý MÌNH LÀ CODE TRIẾT XUẤT MÌNH BỊ SAI DẪN TỚI KHI TRIẾT XUẤT THÌ KHÔNG CÓ DÒNG TIÊU ĐỀ.
-CỘT CẦN TRIẾT XUẤT -> CHỈ TRIẾT XUẤT DÒNG CÓ DỮ LIỆU.
code bạn viết sai nên dẫn tới trích xuất dữ liệu bị sai,
1. nếu bảng dữ liệu của bạn cố định là 13 cột thì sửa
Mã:
Set startcell = ws.Range("A2:M2")
sẽ có thêm dòng tiêu đề khi lọc
2.do code bạn viết While (ws.Cells(i, 22) <> "") cho nên lúc xét tới ô rỗng trong cột điều kiện lọc (cột V ) thì code dừng lại luôn mà ko chạy tiếp vào ô điều kiện tiếp theo
Bài đã được tự động gộp:

Tớ cứ tưởng sai chính tả cơ.
Đúng là Chiết xuất từ ... cái gì đó và - Trích lọc ,Trich xuất dữ liệu . Còn Chiết thì hay dùng chiết cành tỉa lá chứ Triết thì chưa nghe qua
 
Lần chỉnh sửa cuối:
Upvote 0
Ý MÌNH LÀ CODE TRIẾT XUẤT MÌNH BỊ
Nếu bạn vẫn thích làm theo lối cũ gợi ý cho bạn mấy cách như sau
1.ở cột V (cột mà chứa điều kiện lọc ấy) bạn tìm cách xóa dòng trống hay sort từ A-Z hoặc Z-A gì không cần biết miễn là dữ liệu liền mạch để khi chạy hết các ô chứa dữ liệu gặp dòng trống vòng lặp While - Wend của bạn dừng đúng ý đồ đã định
2.Bạn tìm dòng cuối của cột V ,rồi chạy vòng lặp for từ dòng 3 tới dòng cuối,thêm cậu điều kiện if là điều kiện ở cột V khác rỗng thì mới thêm sheet và lọc
* chú : cái phần tiêu đều ấy ngoài việc bạn dùng cố định 13 côt như mình nếu ở trên thì cũng có thể dùng phương thức tìm cột cuối để xác định cột cuối rồi chọn thay vì cố định từ (“A2:M2")
 
Lần chỉnh sửa cuối:
Upvote 0
@SEAHAI Bạn muốn vầy á
 

File đính kèm

  • Triết xuất (TY & TV).xlsm
    75.5 KB · Đọc: 16
Upvote 0
triết xuất dữ liệu
là gì vậy bạn?; 1 khi khái niệm quá mới bạn nên định nghĩa!
 
Upvote 0
có khi nào triết = rót không Bác, sau này dùng từ triết rượu
haha. là chiết rượu mới đúng.
triết là triết học, triết lý mà.
Thớt viết sai chính tả nhưng không biết lúc nói thớt sẽ phát âm như thế nào vì mình lục trong đầu không nghĩ ra vùng miền nào phát âm vần "ich" thành vần "iêt" nữa. :D Trong nội dung chính bài viết mà ít nhất 3 lần thấy cái từ ấy luôn á.

Trích xuất dữ liệu á thớt ơi.
 
Upvote 0
haha. là chiết rượu mới đúng.
triết là triết học, triết lý mà.
Thớt viết sai chính tả nhưng không biết lúc nói thớt sẽ phát âm như thế nào vì mình lục trong đầu không nghĩ ra vùng miền nào phát âm vần "ich" thành vần "iêt" nữa. :D Trong nội dung chính bài viết mà ít nhất 3 lần thấy cái từ ấy luôn á.

Trích xuất dữ liệu á thớt ơi.
Có lẽ vầy:
sai chính tả : chiết xuất (ý là như này)
sai ngữ cảnh: trích xuất (vì là từ trên không đúng ngữ cảnh trong tin học)
 
Upvote 0
haha. là chiết rượu mới đúng.
triết là triết học, triết lý mà.
Thớt viết sai chính tả nhưng không biết lúc nói thớt sẽ phát âm như thế nào vì mình lục trong đầu không nghĩ ra vùng miền nào phát âm vần "ich" thành vần "iêt" nữa. :D Trong nội dung chính bài viết mà ít nhất 3 lần thấy cái từ ấy luôn á.

Trích xuất dữ liệu á thớt ơi.
Có lẽ vầy:
sai chính tả : chiết xuất (ý là như này)
sai ngữ cảnh: trích xuất (vì là từ trên không đúng ngữ cảnh trong tin học)
Đối với thớt, chính tả, phát âm hay ngữ cảnh gì đều không quan trọng.
Chính tả: nếu mình dùng tiếng Tây thì đâu cần học lại tiếng Việt.
Ngữ cảnh: theo ngữ cảnh tin học thì vấn đề đã giải quyết xong.
Tiếng Tây gọi là tình huống này "eat your heart out", dịch ra tiếng Việt là "ốc vít bọn bây"
 
Upvote 0
Web KT

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

Back
Top Bottom