Lọc dữ liệu từ Sheets"DATA" sang Sheets"KETQUA" và điền thêm giải thích theo điều kiện (1 người xem)

Liên hệ QC

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

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em chào thầy cô và các anh chị trên diễn đàn giaiphapexcel.com
Em nhờ thầy cô và anh chị viết giúp em Code VBA chương trình lọc dữ liệu ạ.
Yêu cầu của chương trình như sau:
Điều kiện lọc là ở Sheets"DATA" là cột "SO_CMND1", ở Sheets"KETQUA" là Ô cell H3
- Khi em chọn điều kiện lọc trong list danh sách ở Ô cell H3 thì chương trình sẽ lọc dữ liệu từ Sheets"DATA" sang Sheets"KETQUA" và điền dữ liệu trong vùng từ (A3:F32).
- Nếu dữ liệu lọc sang ở hai cột từ cột (A3:A32) và cột (B3:B32) thì có các trường hợp sau
+ Nếu tổng số dữ liệu đếm được ở cột A mà nhỏ hơn tổng số dữ liệu đếm được ở cột B thì ghi xuống bên dưới ở cột A thêm dòng chữ như sau (Trong phương án nhận a thửa nhưng thực tế ngoài thực địa là b thửa do nhận vùng chuyển tiếp. Trong đó: a là số dữ liệu đếm được ở cột A và b là số dữ liệu đếm được ở cột B)
Như ví dụ ở trong file đính kèm
+ Nếu tổng số dữ liệu đếm được ở cột A mà bằng tổng số dữ liệu đếm được ở cột B thì không cần phải ghi thêm
như ví dụ trong file đính kèm
Rất mong được sự giúp đỡ của Thầy cô và anh chị trên diễn đàn
Em cảm ơn nhiều ạ
 

File đính kèm

Em chào thầy cô và các anh chị trên diễn đàn giaiphapexcel.com
Em nhờ thầy cô và anh chị viết giúp em Code VBA chương trình lọc dữ liệu ạ.
Yêu cầu của chương trình như sau:
Điều kiện lọc là ở Sheets"DATA" là cột "SO_CMND1", ở Sheets"KETQUA" là Ô cell H3
- Khi em chọn điều kiện lọc trong list danh sách ở Ô cell H3 thì chương trình sẽ lọc dữ liệu từ Sheets"DATA" sang Sheets"KETQUA" và điền dữ liệu trong vùng từ (A3:F32).
- Nếu dữ liệu lọc sang ở hai cột từ cột (A3:A32) và cột (B3:B32) thì có các trường hợp sau
+ Nếu tổng số dữ liệu đếm được ở cột A mà nhỏ hơn tổng số dữ liệu đếm được ở cột B thì ghi xuống bên dưới ở cột A thêm dòng chữ như sau (Trong phương án nhận a thửa nhưng thực tế ngoài thực địa là b thửa do nhận vùng chuyển tiếp. Trong đó: a là số dữ liệu đếm được ở cột A và b là số dữ liệu đếm được ở cột B)
Như ví dụ ở trong file đính kèm
+ Nếu tổng số dữ liệu đếm được ở cột A mà bằng tổng số dữ liệu đếm được ở cột B thì không cần phải ghi thêm
như ví dụ trong file đính kèm
Rất mong được sự giúp đỡ của Thầy cô và anh chị trên diễn đàn
Em cảm ơn nhiều ạ
Bạn xem file rồi cho biết đúng ý không.
 

File đính kèm

Upvote 0
Em cảm ơn Ba Tê nhiều nhiều anh có thể giúp em cái định dạng căn lề trái cho dòng thêm được không ạ
Em cảm ơn nhiều ạ
Mỗi lần chạy code phải canh lề cho từng ô sao?
Vì bảng kết quả bạn canh giữa nên tôi gán cho nó vào cột E chứ không phải cột A.
Bớt vài dấu cách phía trước trong ô M3 cho dễ. (Chừng nào vừa ý thì thôi)
 
Lần chỉnh sửa cuối:
Upvote 0
Mỗi lần chạy code phải canh lề cho từng ô sao?
Vì bảng kết quả bạn canh giữa nên tôi gán cho nó vào cột E chứ không phải cột A.
Bớt vài dấu cách phía trước trong ô M3 cho dễ. (Chừng nào vừa ý thì thôi)
Dạ không anh Ba Tê à khi chạy Code thì chương trình sẽ Canh giữa còn dòng thêm thì canh trái thôi anh ạ và anh điền giúp em vào cột A vì để em ứng dụng Code của anh vào một chương trình khác tương tự anh ạ
Anh giúp em với nhé. Em cảm ơn anh nhiều nhiều
 
Upvote 0

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Em chào thầy cô và các anh chị trên diễn đàn giaiphapexcel.com
Em nhờ thầy cô và anh chị viết giúp em Code VBA chương trình lọc dữ liệu ạ.
Yêu cầu của chương trình như sau:
Điều kiện lọc là ở Sheets"DATA" là cột "SO_CMND1", ở Sheets"KETQUA" là Ô cell H3
- Khi em chọn điều kiện lọc trong list danh sách ở Ô cell H3 thì chương trình sẽ lọc dữ liệu từ Sheets"DATA" sang Sheets"KETQUA" và điền dữ liệu trong vùng từ (A3:F32).
- Nếu dữ liệu lọc sang ở hai cột từ cột (A3:A32) và cột (B3:B32) thì có các trường hợp sau
+ Nếu tổng số dữ liệu đếm được ở cột A mà nhỏ hơn tổng số dữ liệu đếm được ở cột B thì ghi xuống bên dưới ở cột A thêm dòng chữ như sau (Trong phương án nhận a thửa nhưng thực tế ngoài thực địa là b thửa do nhận vùng chuyển tiếp. Trong đó: a là số dữ liệu đếm được ở cột A và b là số dữ liệu đếm được ở cột B)
Như ví dụ ở trong file đính kèm
+ Nếu tổng số dữ liệu đếm được ở cột A mà bằng tổng số dữ liệu đếm được ở cột B thì không cần phải ghi thêm
như ví dụ trong file đính kèm
Rất mong được sự giúp đỡ của Thầy cô và anh chị trên diễn đàn
Em cảm ơn nhiều ạ
Góp vui cách dùng ADO
Mã:
Sub LocDL_HLMT()
    Dim cn As Object
    Dim strDK, strSQL As String
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0"
    strDK = "from [Data$] where SO_CMND1 = " & Sheet2.Range("H3")
    strSQL = "select DienTich_GiaoRuong,To_BD,Shthua,[DienTich ],XuDong,[Ghi Chú] " & strDK & _
    " union select iif(count(DienTich_GiaoRuong)<count(To_BD),'Trong ph" & ChrW(432) & ChrW(417) & "ng án nh" & ChrW(7853) & "n ' & count(DienTich_GiaoRuong) & ' th" & ChrW(7917) & "a nh" & ChrW(432) & "ng th" & ChrW(7921) & "c t" & ChrW(7871) & " ngoài th" & ChrW(7921) & "c " & ChrW(273) & ChrW(7883) & "a là   ' & count(To_BD) & ' th" & ChrW(7917) & "a do nh" & ChrW(7853) & "n vùng chuy" & ChrW(7875) & "n ti" & ChrW(7871) & "p',''),null,null,null,null,null " & strDK
    Sheet2.Range("A3:F100").ClearContents
    Sheet2.Range("A3").CopyFromRecordset cn.Execute(strSQL)
End Sub
 
Upvote 0
Góp vui cách dùng ADO
Mã:
Sub LocDL_HLMT()
    Dim cn As Object
    Dim strDK, strSQL As String
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0"
    strDK = "from [Data$] where SO_CMND1 = " & Sheet2.Range("H3")
    strSQL = "select DienTich_GiaoRuong,To_BD,Shthua,[DienTich ],XuDong,[Ghi Chú] " & strDK & _
    " union select iif(count(DienTich_GiaoRuong)<count(To_BD),'Trong ph" & ChrW(432) & ChrW(417) & "ng án nh" & ChrW(7853) & "n ' & count(DienTich_GiaoRuong) & ' th" & ChrW(7917) & "a nh" & ChrW(432) & "ng th" & ChrW(7921) & "c t" & ChrW(7871) & " ngoài th" & ChrW(7921) & "c " & ChrW(273) & ChrW(7883) & "a là   ' & count(To_BD) & ' th" & ChrW(7917) & "a do nh" & ChrW(7853) & "n vùng chuy" & ChrW(7875) & "n ti" & ChrW(7871) & "p',''),null,null,null,null,null " & strDK
    Sheet2.Range("A3:F100").ClearContents
    Sheet2.Range("A3").CopyFromRecordset cn.Execute(strSQL)
End Sub
Em cảm ơn Hai Lúa Miền Tây nhiều ạ
 
Upvote 0
Web KT

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

Back
Top Bottom