trích lọc danh sách theo năm sinh mà không dùng autoFilter

Liên hệ QC

amathi

Thành viên mới
Tham gia
5/12/10
Bài viết
4
Được thích
0
Mình là giáo viên tiểu học ở miền núi, đang chập chững tự học VBA. Hằng năm, việc tổng hợp phổ cập giáo dục tiểu học rất vất vả, chủ yếu là làm thủ công. Mình vừa đăng kí thành viên của giaiphapexcell và tải được bài trích lọc dữ liệu rất hay (File trichdulieu.xsl đính kèm); xin nhờ mọi người giúp dùm lọc dữ liệu từ sheet "Mẫu 3" (có nhiều trang, mỗi trang là 1 hộ gia đình) sang sheet "Dsach" mà không dùng autoFilter, khi trích lọc thì mọi đối tượng có cùng năm sinh sẽ được đưa về 1 sheet với các thông tin khác đi cùng (tương tự File trichdulieu.xsl đính kèm). Xin được hướng dẫn chi tiết, mình xin cảm ơn nhiều. Email của mình: amathinong@gmail.com. Mong được sự giúp đỡ của diễn đàn. Xin chân thành cảm ơn.
 

File đính kèm

  • pho cap cap 1.rar
    40.4 KB · Đọc: 101
Để giả lập dữ liệu cho bạn, mình tốn hơn 2/3 thời gian!

Bạn coi trong file, nhứt là [I2] ở trang danh sách;

(Một số cột như 'E', 'F',. . . không biết lấy dữ liệu từ đâu?!)
 

File đính kèm

  • GPEgd.rar
    46.4 KB · Đọc: 101
:-=Hết sức cảm ơn HYen17 đã giúp mình. Sau khi kiểm tra lại quả là các dữ liệu ở 3 cột E, F và L không có cơ sở để lấy. Nhưng do mẫu quy định chung là vậy. Song mình đã thêm 3 cột X, Y, Z để quy định (sau này khi thực hiện sẽ cho anh em điền vào), từ đó lấy dữ liệu điền vào 3 cột E, F và L. Mình cũng đã mày mò thêm code để lấy dữ liệu vào cột V (sheets3 trong file đính kèm); nhưng chưa biết cách lấy dữ liệu từ 3 cột X, Y, Z sang 3 cột E, F và L. Mong bạn giúp mình. Một lần nữa hết sức cảm ơn bạn.}}}}}
 

File đính kèm

  • PCCap1.rar
    59.6 KB · Đọc: 34
Rất cảm kích là bạn đã mày mò & bước đầu quen với VBA, Chúc ~ thành công sắp tới!

& sau đây là những dòng thêm vô & sửa lại 1 dòng lệnh

PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [I2]) Is Nothing Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range
   Dim MyAdd As String, Rws As Long
   
   Set Rng = [B7].Resize(200, 20):              Rng.EntireRow.Hidden = False
   Rng.ClearContents:                           Set Sh = Sheets("Mau3")
   Set Rng = Sh.Range(Sh.[c7], Sh.[C65500].End(xlUp))
   Set sRng = Rng.Find([I2].Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         With [B206].End(xlUp).Offset(1)
            .Value = sRng.Offset(, -1).Value
            .Offset(, 1).Resize(, 2).Value = sRng.Offset(, 1).Resize(, 2).Value
            .Offset(, 5).Resize(, 5).Value = sRng.Offset(, 3).Resize(, 5).Value
            .Offset(, 11).Value = sRng.Offset(, 16).Value   ' Khuyét Tat'
            .Offset(, 12).Value = sRng.Offset(, 13).Value   ' Bo Hoc'
            'Dy Chuyen:'
            .Offset(, 13).Resize(, 2).Value = sRng.Offset(, 17).Resize(, 2).Value
1           .Offset(, 15).Value = sRng.Offset(, 19).Value  '<=| Só Ho'
            .Offset(, 3).Resize(, 2).Value = sRng.Offset(, 20).Resize(, 2).Value
3           .Offset(, 10).Resize(, 2).Value = sRng.Offset(, 22).Resize(, 2).Value '<=|'
         End With
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
   Rws = [B200].End(xlUp).Row + 5
   Range(Cells(Rws, 2), Cells(199, 2)).EntireRow.Hidden = True
 End If
End Sub
 
Cần tổng hợp bằng VB.

Cảm ơn HYen17. Nhưng nếu như trên thì cột khuyết tật không lấy được dữ liệu (theo sheet3 kèm theo); mình đã viết thêm code như ở sheet "danh sách" và thấy kết quả khá tốt. Mong bạn kiểm tra giúp. Mình dự kiến tổng hợp bằng các hàm trong excel (ví dụ ở sheet3) nhưng sợ dùng nhiều hàm, File nặng, khó chạy. Liệu có thể dùng VB để tổng hợp được không? Nếu được bạn viết giúp code để mình nghiên cứu nha. Chân thành cảm ơn.
 

File đính kèm

  • Copy of PCCap1.rar
    54.3 KB · Đọc: 69
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom