Hỏi cách lọc dữ liệu và phân nhóm dữ liệu ! (1 người xem)

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

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

conanta

Thành viên mới
Tham gia
2/12/09
Bài viết
18
Được thích
0
Các bạn ơi cho mình hỏi : mình có danh sách học sinh, mình muốn lọc dữ liệu theo từng lớp và đưa mỗi nhóm dữ liệu vào mỗi trang và mỗi trang đó có tiêu đề và những dòng ký nhận phía dưới dữ liệu. Mình mò các công thức của excel hoài mà chưa được. giúo mình vói nha ! cám ơn
 
Các bạn ơi cho mình hỏi : mình có danh sách học sinh, mình muốn lọc dữ liệu theo từng lớp và đưa mỗi nhóm dữ liệu vào mỗi trang và mỗi trang đó có tiêu đề và những dòng ký nhận phía dưới dữ liệu. Mình mò các công thức của excel hoài mà chưa được. giúo mình vói nha ! cám ơn

Cần gì phải khổ thế,
Bạn dùng Pivot thì sẽ tổng hợp tốt hơn, nếu không thì trích lọc dữ liệu.
Tốt nhất là bạn đưa dữ liệu lên để diễn đàn giúp đỡ được chi tiết hơn,
Thân,
 
Chắc mình chưa được quyền up hay sao ấy. để khi nào được up thi mình sẽ up. Mà các bạn hiểu được vấn đề của mình rồi thì chỉ cho mình luôn được ko, mình cũng chưa biết xài cái pivot ấy ntn nữa.
 
Các bạn ơi cho mình hỏi : mình có danh sách học sinh, mình muốn lọc dữ liệu theo từng lớp và đưa mỗi nhóm dữ liệu vào mỗi trang và mỗi trang đó có tiêu đề và những dòng ký nhận phía dưới dữ liệu. Mình mò các công thức của excel hoài mà chưa được. giúo mình vói nha ! cám ơn
Khi lọc và in thì chỉ cần một trang thôi, còn muốn có gì trên đó thì tự thêm vào, cùng trường thì tiêu đề phải giống nhau chứ
Tặng bạn cái này, nếu đúng ý thì làm còn không thì để tham khảo nhé
Hy vọng đúng ý bạn
Thân
 

File đính kèm

Các bạn ơi cho mình hỏi : mình có danh sách học sinh, mình muốn lọc dữ liệu theo từng lớp và đưa mỗi nhóm dữ liệu vào mỗi trang và mỗi trang đó có tiêu đề và những dòng ký nhận phía dưới dữ liệu. Mình mò các công thức của excel hoài mà chưa được. giúo mình vói nha ! cám ơn

Gửi giùm file bạn conanta, bổ sung một số diễn giải của tác giả;
Cái sheet 1-XN53S-6242 là mẫu nó được phân nhóm theo lớp, mỗi lớp đó chỉ có vài học sinh tham gia đi học bằng xe đưa đón, nhưng cái đó mình phải làm thủ công, cắt dán tiêu đề ở trên và phần chữ ký xác nhận phía dưới dữ liệu cho từng lớp. Còn những sheet còn lại mình cũng phải làm giống cách làm của sheet 1 luôn. Mình phải làm báo cáo học sinh đi học cho mỗi xe như vậy. cám ơn bạn nhiều.

Mọi người giúp đỡ!
 

File đính kèm

Ko ai giúp dc mình sao, mình gửi lại file này, các bạn coi thử có cách nào làm nhanh hơn ko !
 

File đính kèm

Sau 2 tiếng đánh vật với nó & đây, xin mời xem trong file đính kèm

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [h2]) Is Nothing Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range, Clls As Range
   Dim MyAdd As String, MyColor As Byte, SoDg As Byte
   
   Set Sh = Sheets("53S-6015"):           Sh.[A9].Resize(45, 5).ClearContents
   Sh.Cells.EntireRow.Hidden = False:     MyColor = [h2].Interior.ColorIndex + 1
   Set Rng = Range([D1], [D65500].End(xlUp))
   Set sRng = Rng.Find([h2].Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      Sh.[a3] = sRng.Offset(, 2).Value
      MyAdd = sRng.Address
      Do
         Sh.[A55].End(xlUp).Offset(1).Resize(, 4).Value = _
            sRng.Offset(, -3).Resize(, 4).Value
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
   [h2].Interior.ColorIndex = IIf(MyColor > 42, 34, MyColor)
   SoDg = 45 - Sh.[A55].End(xlUp).Row
   Sh.Cells(54 - SoDg, 1).Resize(SoDg).EntireRow.Hidden = True
   Sh.Select:                 Set Sh = Nothing
 End If
End Sub

Hướng dẫn cách dùng:
(*) Chọn lớp tại [H2] của trang 'DSHS' bên trang kia sẽ là 1 bản báo cáo các em HS đí xe . . . của lớp đó.
(*) Xem trang in, nếu không sửa được tự ên thì kếu la, nha!

(*) Bạn có thể chép thêm HS của các xe khác vô trang tính 'DSHS' với yếu cầu có số xe kèm theo ở cột cuối của danh sách;

(*) . . . . .
 

File đính kèm

Cám ơn bạn ChanhTQ@ nhiều, nhưng làm như vậy mình in sẽ lâu và dễ sai sót, mình muốn nó liệt kê ra hết để in 1 lần đó mà. :)
 
nhưng làm như vậy mình in sẽ lâu và dễ sai sót, mình muốn nó liệt kê ra hết để in 1 lần đó mà.

Không hề sai sót đó nghe! Bạn đã kiểm chưa mà nói vậy?

Còn việc để hiện lên mỗi lớp 1 trang chỉ là bước ngắn nữa thôi.

Nhưng tùy bạn vậy!
 
Cám ơn bạn ChanhTQ@ nhiều, nhưng làm như vậy mình in sẽ lâu và dễ sai sót, mình muốn nó liệt kê ra hết để in 1 lần đó mà. :)
Hãy đưa danh sách thật và yêu cầu thật chi tiết, cái này không khó đâu, chỉ cần dùng vài hàm là làm được nếu không muốn dùng code
Thân
 
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [h2]) Is Nothing Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range, Clls As Range
   Dim MyAdd As String, MyColor As Byte, SoDg As Byte
   
   Set Sh = Sheets("53S-6015"):           Sh.[A9].Resize(45, 5).ClearContents
   Sh.Cells.EntireRow.Hidden = False:     MyColor = [h2].Interior.ColorIndex + 1
   Set Rng = Range([D1], [D65500].End(xlUp))
   Set sRng = Rng.Find([h2].Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      Sh.[a3] = sRng.Offset(, 2).Value
      MyAdd = sRng.Address
      Do
         Sh.[A55].End(xlUp).Offset(1).Resize(, 4).Value = _
            sRng.Offset(, -3).Resize(, 4).Value
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
   [h2].Interior.ColorIndex = IIf(MyColor > 42, 34, MyColor)
   SoDg = 45 - Sh.[A55].End(xlUp).Row
   Sh.Cells(54 - SoDg, 1).Resize(SoDg).EntireRow.Hidden = True
   Sh.Select:                 Set Sh = Nothing
 End If
End Sub

Hướng dẫn cách dùng:
(*) Chọn lớp tại [H2] của trang 'DSHS' bên trang kia sẽ là 1 bản báo cáo các em HS đí xe . . . của lớp đó.
(*) Xem trang in, nếu không sửa được tự ên thì kếu la, nha!

(*) Bạn có thể chép thêm HS của các xe khác vô trang tính 'DSHS' với yếu cầu có số xe kèm theo ở cột cuối của danh sách;

(*) . . . . .
Sao sư phụ không dùng Advanced Filter hoặc AutoFilter nhỉ? Em nghĩ code ngắn hơn ấy chứ
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo Thoat
  If Target.Address = "$H$2" Then
    Range("A8").CurrentRegion.Resize(, 1).SpecialCells(2, 1).Resize(, 6).Delete 2
    With Sheet1.Range("A1").CurrentRegion
      .AutoFilter 4, Target.Value
      Intersect(.Cells, .Offset(1)).SpecialCells(12).Copy
      Range("A9").Insert 2
      .AutoFilter
    End With
    With Range("A8").CurrentRegion.Resize(, 1).SpecialCells(2, 1)
      .Value = Evaluate("ROW(R:R)")
    End With
  End If
Thoat:
End Sub
2 bạn này conanta concogia tên na ná nhau ---> Khó phân biệt ai là ai ghê! Ẹc... Ẹc...
 

File đính kèm

Sao sư phụ không dùng Advanced Filter hoặc AutoFilter nhỉ? Em nghĩ code ngắn hơn ấy chứ
PHP:
2 bạn này[B] conanta[/B] và[B] concogia [/B]tên na ná nhau ---> Khó phân biệt ai là ai ghê! Ẹc... Ẹc...[/QUOTE]
[COLOR=blue] Thày ơi, thật ra tác giả muốn làm một lần ra hết danh sách học sinh các lớp đi xe, mỗi lớp một trang, in một lận một, cái này dễ mà, chỉ tại tác giả cứ đưa dữ liệu lung tung, không biết chính xác để lọc, chứ bài này không cần đến thầy ra tay đâu, để em "nghiên kiú" nó vài phút là ra ngay đó mà[/COLOR]
[COLOR=blue]Thân[/COLOR]
 
Gửi giùm file bạn conanta, bổ sung một số diễn giải của tác giả;


Mọi người giúp đỡ!
Xin lỗi bạn, hôm qua "xỉn" qúa đọc không kỹ bài, theo mình nếu bạn không muốn sử dụng code mà dùng hàm mình xin gợi ý:
- Tất cả dữ liệu đưa vào một sheet thôi ( cần thêm cột số xe), bạn dùng ds toàn trường hs nào đi xe nào thì nhập số xe đó
- Bảng lọc để in chỉ cần một trang thôi ( sẽ bớt đi rất nhiều công thức)
Bạn nhập dữ liệu ở ô SOXE và LỚP , xe nào có hs lớp đó đi sẽ dò ra, còn không có thì nó ra hàng rào ( cái hàng rào này bỏ đi cũng được nhưng mình thấy không cần thiết)
Hy vọng bài mình giúp cho bạn phần nào đỡ cực
Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Thày ơi, thật ra tác giả muốn làm một lần ra hết danh sách học sinh các lớp đi xe, mỗi lớp một trang, in một lận một, cái này dễ mà, chỉ tại tác giả cứ đưa dữ liệu lung tung, không biết chính xác để lọc, chứ bài này không cần đến thầy ra tay đâu, để em "nghiên kiú" nó vài phút là ra ngay đó mà
Thân
Ái dà... hình như bạn không hiểu ý đồ trong code của tôi và sư phụ thì phải
Ai lại Show hết 1 lần tất cả các trang cho tốn giấy (mà dân làm Excel chuyên nghiệp cũng chẳng thấy ai làm vậy bao giờ)
Code cho phép lọc từng trang, vậy nếu muốn in toàn bộ thì thêm vòng lập vào, đại khái nó sẽ chọn từng lớp rồi in... cho đến hết ---> Có phải là đở tốn dung lương hơn không (vì lúc nào trên màn hình cũng chỉ có 1 trang mà thôi)
 
Thày ơi, thật ra tác giả muốn làm một lần ra hết danh sách học sinh các lớp đi xe, mỗi lớp một trang, in một lận một, cái này dễ mà, chỉ tại tác giả cứ đưa dữ liệu lung tung, không biết chính xác để lọc, chứ bài này không cần đến thầy ra tay đâu, để em "nghiên kiú" nó vài phút là ra ngay đó mà
Thân
Hi hi, vài phút chi mà lâu rứa. To Conanta:
- Dùng file cua concogia là ngon rồi.
- Việc cập nhật dữ liệu, tổ chức và sắp xếp dữ liệu trên bảng tính đầy đủ, chính xác, khoa học sẽ giúp cho công tác thống kê, tính toán của ta dễ dàng. Bạn nên tìm hiểu kỹ và học cách cấu trúc bảng dữ liệu của Ndu, concogia, chanhTQ, ... thì bạn sẽ nhanh chóng tiếp cận được vấn đề.
Chúc thành công
 
Web KT

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

Back
Top Bottom