Sửa giúp code để lọc dữ liệu (1 người xem)

  • Thread starter Thread starter ditimdl
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ditimdl

Thành viên thường trực
Tham gia
11/10/06
Bài viết
378
Được thích
107
Giới tính
Nam
Nghề nghiệp
Pharmacist
PHP:
Sub AutoFilterAndCopy()
Sheets("Data").[A1:A50].AutoFilter Field:=1, Criteria1:="A"
Sheets("Data").[A1].Select
Range(Selection, Selection.End(xlDown)).Select
''//Kiểm tra xem dữ liệu filter có rỗng hay không:
''//Nếu rỗng thì thoát khỏi thủ tục:
If Selection.Rows.Count >= 65536 Then
Exit Sub
Else
''//Nếu không rỗng mới copy:
Selection.Copy 
Sheets("Report").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If
''//Phần này không hoạt động được
Sheets("Data").[A1:A50].AutoFilter Field:=1, Criteria1:="D"
Sheets("Data").[A1].Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy 
Sheets("Report2).select
range("A2").select
....
End Sub
</SPAN></SPAN>
Đoạn code trên mình dùng để lọc dữ liệu, anh ca_dafi thêm phần kiểm tra dữ liệu sau khi filter, nếu kết quả filter rỗng thì thoát khỏi thủ tục lọc và copy, ngược lại thì copy sang 1 sheet khác. Code hoạt động tốt nhưng nó lại làm cho các sub lọc tiếp theo không thể chạy được. Nhờ các bác giúp em sửa giúp code để sau khi lọc phần tử A xong thì đoạn code trên ko tiến hành lọc tiếp phần tử D.
(Phần này em post bên phần xử lý dữ liệu nhưng không đúng chủ đề nên ít nhận được sự hổ trợ nên em cắt qua bên này. Mong các bác giúp.)
 
Thay Q thành T thì em làm được rồi, lọc theo mã từng sheet thì ok nhưng không biết sửa code như thế nào để nó lấy thêm 3 cột mới thêm vào đưa qua sheet tổng hợp.
Các bạn giúp mình với.
Giờ bạn thêm bên sheet TONGHOP như thế nào, bạn cứ cho vào file mới hình dung được bạn à (tôi không thấy bên sheet TONGHOP thêm cột nào nên không làm được)
-----------------
Ah... hình như tôi đoán ra được rồi... bạn làm như sau:
- Ở sheet TOTAL bạn thêm cột thế nào thì các sheet con và sheet TONGHOP bạn cũng thêm cột tương ứng như thế
- Các sheet con, cột nào cần thêm thì chú ý bên dưới nhớ điền công thức SUBTOTAL(...) vào
- Vào code, thay đoạn:
Temp.Offset(Temp.Rows.Count + 1, 2).Resize(1, 13).SpecialCells(3, 23).Copy
thành:
Temp.Offset(Temp.Rows.Count + 1, 2).Resize(1, 16).SpecialCells(3, 23).Copy
Thêm 3 cột, đương nhiên phải Resize 16 rồi (lúc trước là 13)
Bạn thử xem ---> Có gì trục trặc lại bàn tiếp
 
Lần chỉnh sửa cuối:
Upvote 0
Ok được rồi, cái này nó dựa vào tên nhãn của cột để lấy dữ liệu sang sheet tổng hợp phải không anh?
Mã:
(Temp.Rows.Count + 1, 2)[/B]
[B]SpecialCells(3, 23).Copy
Anh giải thích những con số trong đó cho em hiểu thêm tí được không?
 
Upvote 0
Ok được rồi, cái này nó dựa vào tên nhãn của cột để lấy dữ liệu sang sheet tổng hợp phải không anh?
Mã:
(Temp.Rows.Count + 1, 2)
Mã:
[B]SpecialCells(3, 23).Copy[/B]
Anh giải thích những con số trong đó cho em hiểu thêm tí được không?
1> (Temp.Rows.Count + 1, 2)
Viết đủ hơn phải là
Temp.Offset(Temp.Rows.Count + 1, 2)

Temp = Sh.[A5].CurrentRegion
Vậy có nghĩa là:
- Ta đặt con trỏ chuột tại A5 (ở từng sheet con) rồi bấm Ctrl + Shift + * ---> Nó sẽ chọn nguyên vùng có liên quan đến A5
- Tiếp theo Offset(Temp.Rows.Count + 1, 2) là dịch xuống với số dòng đúng = số dòng của Temp và thêm 1 đơn vị nữa (ví dụ: Temp có 5 dòng thì ta dịch xuống 6 dòng)... rồi dịch sang phải 2 cột ---> Đây chính là dòng tổng cuối trang của từng sheet con (bạn đếm thử xem có đúng như tôi tính toán không?)
2> SpecialCells(3, 23).Copy ---> Chỉ copy các cell có công thức
Quan trọng ở mục 2 này đây ---> Bạn muốn copy cột nào, chỉ cần đặt công thức phía dưới là nó copy tuốt ---> Đơn giản vậy thôi chứ không phải là "nó dựa vào tên nhãn của cột để lấy dữ liệu"
 
Upvote 0
Đệ có cái EXcel tính lương tự động nhưng dữ liệu row trong excel không đủ (thực tế CN, mã hàng nhiều lắm), với lại Excel chạy chậm lắm. Các huynh có cách gì cải tiến nó 1 chút không. Nhờ các huynh bỏ chút thời gian nghiên cứu sửa cho đệ với.
Mình up ở đây nha: vì trong diễn đàn ko up đc
http://www.4shared.com/file/98223454...luong_may.html
Xin cảm ơn
 
Upvote 0
Lọc danh sách

Tôi có danh sách tổng hợp của học sinh ở sheet1.
Bạn hãy nêu giúp tôi cách lọc ra danh sách học sinh giỏi ở sheet2; học sinh khá ở sheet3
(như ở file đính kèm)
Tôi muốn khi nhập song các dữ liệu ở sheet1 thì ngay lập tức có được kết quả ở các sheet2 và sheet3; .....
 

File đính kèm

Upvote 0
Có thể gộp chung trong 1 trang tính thôi, xem thêm trong file kèm theo

Tôi có danh sách tổng hợp của học sinh ở sheet1.
Bạn hãy nêu giúp tôi cách lọc ra danh sách học sinh giỏi ở sheet2; học sinh khá ở sheet3
(như ở file đính kèm)
Tôi muốn khi nhập song các dữ liệu ở sheet1 thì ngay lập tức có được kết quả ở các sheet2 và sheet3; .....


PHP:
 Option Explicit
Dim Sh As Worksheet, Rng As Range
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [i1]) Is Nothing Then
   Range([B7], Cells([B65500].End(xlUp).Row, "G")).ClearContents
   GPE_COM
   Sh.Range("i7:N" & Sh.[i65500].End(xlUp).Row).Copy Destination:=[B7]
   Set Sh = Nothing:          Set Rng = Nothing
 End If
End Sub

Mã:
[B]Sub GPE_COM()[/B]
 Set Sh = Sheets("Lop")
 Set Rng = Sh.Range("B6:G" & Sh.[B65500].End(xlUp).Row)
 Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sh.Range( _
        "M1:M2"), CopyToRange:=Sh.Range("I6:N6"), Unique:=False
[B]End Sub[/B]
 

File đính kèm

Upvote 0
lọc danh sách

Bạn có thể chỉ dẫn rõ hơn cho tôi về việc sử dụng và viêt các đoạn PH code và code được không? (nhập vào đâu)
File bạn gửi cho tôi chỉ thay đổi được tiêu đề "danh sách HSG" hay "danh sách HSTT" thôi mà chưa có học sinh đi kèm các tiêu đề đó.
Bạn xem và sửa lại cũng như chỉ dẫn thêm. Xin cảm ơn!
(Đi xin nhưng hơi bị "xôi gấc" - trình độ có hạn thông cảm nha!:=\+
 
Upvote 0
Sao vậy được ta?

Mình vửa tải file đính kèm & vận hành thấy suông sẻ mà!

Bạn thử đến ô màu lam [I1] & cho biết có danh sách nào trong đó không?
Nếu có thì chọn lấy 1 lần lượt xem sao!
 
Upvote 0
tôi đã làm

Tôi đã làm lại theo bạn chỉ dẫn nhưng sau khi đổi ds ở ô I1 thì kết quả là chỉ có tên tiêu đề thay đổi còn danh sách học sinh trong đó vẫn y nguyên không có thay đổi gì cả!!!!
 
Upvote 0
Tôi đã làm lại theo bạn chỉ dẫn nhưng sau khi đổi ds ở ô I1 thì kết quả là chỉ có tên tiêu đề thay đổi còn danh sách học sinh trong đó vẫn y nguyên không có thay đổi gì cả!!!!
Vậy tôi nghĩ có vấn đề với Settings trong Macro Security trên máy bạn rồi!
Bạn cho hỏi: Khi bạn mở file thì bạn nhìn thấy thông báo giống hình nào dưới đây?
Hình 1

attachment.php


Hình 2

attachment.php


Và bạn đã làm gì?
Nếu bạn thấy thông báo giống hình 1 thì đơn giản chỉ cần bấm nút Enable Macros là code chạy được
Nếu bạn nhìn thấy thông báo giống hình 2 thì phải làm tiếp 1 thao tác nữa:
- Vào menu Tools\Macro\Security rồi chọn giống hình dưới đây:

attachment.php


- Sau đó đóng file, mở lại lần nữa, bấm nút Enable Macros
Bạn kiểm tra lại xem
 

File đính kèm

  • untitled1.JPG
    untitled1.JPG
    18.4 KB · Đọc: 140
  • untitled2.JPG
    untitled2.JPG
    55.9 KB · Đọc: 140
  • untitled3.JPG
    untitled3.JPG
    35 KB · Đọc: 140
Upvote 0
đã tìm thấy lỗi

Tôi đã tìm ra lỗi và khắc phục được theo chỉ dẫn của ndu96081631.
Bạn có thể chỉ dẫn giúp tôi việc tạo ra macro đó.
Xin cảm ơn!**~**
 
Upvote 0
Tôi đã tìm ra lỗi và khắc phục được theo chỉ dẫn của ndu96081631.
Bạn có thể chỉ dẫn giúp tôi việc tạo ra macro đó.
Xin cảm ơn!**~**
Đầu tiên bạn mở file đang chứa macro, bấm Alt + F11 để vào xem người ta viết gì trong đó
Việc tạo ra macro có nhiều cách: Ai rành thì tự viết lấy (cũng Alt + F11 rồi viết vào cửa số này)... Còn ai mới học sẽ dùng chức năng Record macro của Excel trợ giúp (menu Tools\Macro\Record new macro) ---> Nó giống như cái máy thu băng, ta làm sao nó ghi lại tất cả thành code, mai này "nhấn nút" nó làm lại toàn bộ thao tác mà ta đã làm
 
Upvote 0
Lọc danh sách

Các bạn hãy giúp tôi thiết kế macro như đã làm ở file gửi lần trước theo ý sau:
-Ở sheet 2: dùng để lọc danh sách học sinh theo xếp loại học lực.
-Ở sheet 3: dùng để lọc danh sách học sinh theo danh hiệu thi đua.
Giúp tôi sớm nhé các bạn.
Xôi gấc tí nhé!(Hãy chỉ dẫn giúp cụ thể cách tạo ra các macro đó nhé - chỉ cần 1 cái thôi là có thể tôi sẽ cố nghĩ tiếp) Hi hi ......:=\+
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
 Option Explicit
Dim Sh As Worksheet, Rng As Range
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [i1]) Is Nothing Then
   Range([B7], Cells([B65500].End(xlUp).Row, "G")).ClearContents
   GPE_COM
   Sh.Range("i7:N" & Sh.[i65500].End(xlUp).Row).Copy Destination:=[B7]
   Set Sh = Nothing:          Set Rng = Nothing
 End If
End Sub

Mã:
[B]Sub GPE_COM()[/B]
 Set Sh = Sheets("Lop")
 Set Rng = Sh.Range("B6:G" & Sh.[B65500].End(xlUp).Row)
 Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sh.Range( _
        "M1:M2"), CopyToRange:=Sh.Range("I6:N6"), Unique:=False
[B]End Sub[/B]
Bạn làm ơn chỉ dẫn giùm tôi nhé. Yêu cầu tôi để trong file đính kèm!
Thank you very much!
 

File đính kèm

Upvote 0
Xin giúp em tạo macro tự động rút trích dữ liệu

Xin chào mọi người,

Mọi người giúp em tạo một cái macro khi nhập dữ liệu đơn đặt hàng vào bảng tổng thì nó tự động rút trích qua các sheet tương ứng bên cạnh.

File đính kèm gồm sheet Total chứa tất cả đơn hàng trong năm. Căn cứ vào cột S - Đơn đặt trong tháng để chép dữ liệu qua các tháng tương ứng. Điều quan trọng là khi em có thêm đơn hàng của tháng mới và tạo thêm sheet mới thì nó tự động rút trích qua đó luôn mà ko cần phải sửa lại code hay gì đó.

Link download: http://loinhac.ucoz.com/load/0-0-0-26-20 (304.2Kb) - direct link

(em upload lên diễn đàn ko đc...nên mới upload qua trang khác. Link trên download trực tiếp, không có quảng cáo).

Rất mong được sự giúp đỡ của mọi người.

Thân
Hoa
 
Upvote 0
Đối với file này thì nên để chi tiết tháng vào 1 sheet, khi cần xem tháng nào cứ chọn tháng là có dữ liệu
 

File đính kèm

Upvote 0
Upvote 0
Hãy bấm vô nút cần thiết để có kết quả các tháng

[ThongBao]Hi anh,
Mình không thể show dữ liệu ra từng tháng theo sheet sao? Em cũng muốn sửa lại theo ý muốn nhưng không được. Vì mấy ông cấp trên không cho, chỉ show theo tháng qua các sheet.

Em muốn cái code giống như thế này: Khi nhập vào total sẽ tự động rút trích qua sheet tháng. Thanks a![/ThongBao]

Lần sau bạn nên bỏ bớt nữa dữ liệu trong các tháng: đỡ hao tài nguyên của bạn & mọi người có nhã í giúp bạn!
 

File đính kèm

Upvote 0
Nó bị lỗi như thế này





Khi nhấn nút chuyển dữ liệu thì nó hiện lỗi bên dưới.



Mặc dù em đã khởi động macro.


Em sửa lại file dữ liệu ẽxcel rồi. Anh xem lại giúp em nha. Bây giờ mình dùng cột Y ( Đơn đặt trong tháng).

Link download: http://loinhac.ucoz.com/load/0-0-0-27-20 (241Kb)

(em xóa bớt một số đơn nhưng vẫn không thể upload lên diễn đàn được - link download là trực tiếp - không có quảng cáo)

Cám ơn anh và mọi người!
 
Upvote 0
Web KT

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

Back
Top Bottom