Hỏi về cách nhóm dữ liệu của một cột trong excel?

Liên hệ QC

nguoibenhonhat

Thành viên mới
Tham gia
19/3/08
Bài viết
5
Được thích
0
Chào các bạn ! Mình có một vấn đề đang cần được giải quyết trong excel mà vẫn chưa giải quyết được. Mình đưa ra đây để mọi người cùng thảo luận và ai có cách nào làm được thì chỉ cho mình và mọi người nhé!

Vấn đề như sau:
Mình có một cột dữ liệu trong 1 bảng như sau:
000ô0A
1000 H01
2000 H01
3000 H01
4000 H02
5000 H02
6000 H03
7000 H03
8000 H03
9000 H03
1000 H04
1100 H04
1200 H04

Giờ mình muốn nhóm dữ liệu này lại vào một bảng khác để thành một cột như sau:
000000A
1000 H01
2000 H02
3000 H03
4000 H04

Mong các bạn trả lời giúp mình nhé ! Cảm ơn nhiều !
 
Chào các bạn ! Mình có một vấn đề đang cần được giải quyết trong excel mà vẫn chưa giải quyết được. Mình đưa ra đây để mọi người cùng thảo luận và ai có cách nào làm được thì chỉ cho mình và mọi người nhé!

Vấn đề như sau:
Mình có một cột dữ liệu trong 1 bảng như sau:
000ô0A
1000 H01
2000 H01
3000 H01
4000 H02
5000 H02
6000 H03
7000 H03
8000 H03
9000 H03
1000 H04
1100 H04
1200 H04

Giờ mình muốn nhóm dữ liệu này lại vào một bảng khác để thành một cột như sau:
000000A
1000 H01
2000 H02
3000 H03
4000 H04

Mong các bạn trả lời giúp mình nhé ! Cảm ơn nhiều !
Của bạn là lọc dữ liệu duy nhất :
bạn thử code này nhé
Mã:
Option Explicit
Function OB(ParamArray Mang())
    On Error Resume Next
    Dim TempCell As Range, Temp As Range
    Dim TimThay As Boolean
    Dim i As Long, iR As Long, iC As Long
    Dim MangTemp(1 To 10000, 0)
    iR = 1
    For i = LBound(Mang) To UBound(Mang)
        Set Temp = Mang(i)
        For Each TempCell In Temp
            ' Kiem tra xem da co phan tu nay chua
            For iC = 1 To iR - 1
                If MangTemp(iC, 0) = TempCell.Value Then
                    TimThay = True
                    Exit For
                End If
            Next
            If TimThay = False Then
                MangTemp(iR, 0) = TempCell.Value
                iR = iR + 1
            Else
                TimThay = False
            End If
        Next
    Next
    OB = MangTemp()
End Function
 
Cám ơn bạn baucua nhé ! mình đã làm nhưng kết quả vẫn chưa đúng như ý muốn.
 
Lần chỉnh sửa cuối:
Khi dữ liệu đã được Sort như vậy rồi, bạn có thể dùng chức năng Advance Filter sẵn có của Excel (Vào Data/Filter/Advance Filter).
Ngoài ra bạn còn có thể dùng Chức năng SUBTOTAL (vào Data/Subtotal) của excel để Group theo nhóm.
Bên cạnh đó bạn cũng có thể dùng Pivottable để nhóm dữ liệu theo yêu cầu của mình.
 
Lần chỉnh sửa cuối:
Khi dữ liệu đã được Sort như vậy rồi, bạn có thể dùng chức năng Advance Filter sẵn có của Excel (Vào Data/Filter/Advance Filter).
Ngoài ra bạn còn có thể dùng Chức năng SUBTOTAL (vào Data/Subtotal) của excel để Group theo nhóm.
Bên cạnh đó bạn cũng có thể dùng Pivottable để nhóm dữ liệu theo yêu cầu của mình.

Ngoài những chức năng có sẵn trong Excel như cadafi đã nói thì thêm một cách nữa đó là dùng Consolidate - cái này dùng trong trường hợp này cũng "ngon" lắm !
 
Mục đích của mình khi nhóm dữ liệu thành bảng mới như vậy là để nạp dữ liệu trong bảng mới này vào hộp combo box trong excel.
Từ hộp combo box này mình sẽ có thể chọn dữ liệu cần thiết để tìm kiếm hoặc tổng hợp.
Đây mới là mục đích của mình.
Do vậy mình mới không sử dụng Advance Filter và subtotal
 
Ý bạn là tao danh sách duy nhất để làm nguồn Combbox có đúng không?
Thử cách dùng Advance Filter xem sao?
Mình bổ xung cách dùng cột phụ và công thức dễ làm dễ hiểu, cách phức tạp tính sau 1 chút.
 

File đính kèm

  • TaoDS.rar
    175.2 KB · Đọc: 119
  • Tao DS.xls
    19 KB · Đọc: 107
Lần chỉnh sửa cuối:
Mục đích của mình khi nhóm dữ liệu thành bảng mới như vậy là để nạp dữ liệu trong bảng mới này vào hộp combo box trong excel.
Từ hộp combo box này mình sẽ có thể chọn dữ liệu cần thiết để tìm kiếm hoặc tổng hợp.
Đây mới là mục đích của mình.
Do vậy mình mới không sử dụng Advance Filter và subtotal
Thì tạo 1 Function vậy:
PHP:
Function UniqueList(sRange)
  Dim TmpArr, Item
  TmpArr = sRange
  With CreateObject("Scripting.Dictionary")
    For Each Item In TmpArr
      If Item <> "" And Not .Exists(Item) Then .Add Item, ""
    Next
    UniqueList = .Keys
  End With
End Function
Tạo list cho ComboBox, chỉ cần vầy:
PHP:
ComboBox1.List() = UniqueList(Range("...."))
 

File đính kèm

  • UniqueList.xls
    29.5 KB · Đọc: 87
Cám ơn mọi người ! Mình đã làm được rồi. Nhưng có một điều là mỗi lần nhập thêm dữ liệu ở bảng 1 thì lại phải thao tác lại để dữ liệu được nhóm lại ở bảng 2. Không tự động được.
Cám ơn mọi người rất nhiều !
 
Cám ơn mọi người ! Mình đã làm được rồi. Nhưng có một điều là mỗi lần nhập thêm dữ liệu ở bảng 1 thì lại phải thao tác lại để dữ liệu được nhóm lại ở bảng 2. Không tự động được.
Cám ơn mọi người rất nhiều !
Bạn cần cái BẢNG 2 ấy để làm gì?
Rõ ràng bạn nói cần "nhóm dữ liệu" để nạp ComboBox cơ mà ---> Hàm của tôi chẳng cần BẢNG nào cả
 
Cái bảng dùng công thức của mình là tự động đấy chứ. Bạn dùng tạm đi rồi nghiên cứu kỹ bài của bác Ndu nha, đây là 1 trong các phương thức tạo danh sách duy nhất khá nhất mình biết đấy. Bạn thử tưởng tượng xem khi file của bạn phát triển thêm cần rất nhiều các danh sách như thế này. Nếu tạo la liệt danh sách thì phải huy sinh nhiều thứ lắm: Dung lượng bộ nhớ, tốc độ tính toán, quản lý Danh sách v.v...Trong khi Code của bác Ndu nó giống như cái máy lọc. Bạn cứ cho nó 1 Danh sách đầu vào thì đầu ra nó cho bạn 1 mảng danh sách duy nhất tương ứng. Mảng này rất dễ tương tác với các vùng của Worksheet hay các Object trong VBA.
Chúc bạn thành công.
 
Mình hiểu rồi! cám ơn các bạn nhiều lắm ! Chúc các bạn cuối tuần vui vẻ !
 
Xin chào cả nhà:
mình cần đưa dữ liệu từ sheet1 sang bctuan một cách tự động
khi nhập liệu vào sheet1 không theo thứ tự các đội nhưng khi đưa qua bctuan cần phải tính được tổng tuần.
Trong này mình chỉ có thể làm là đưa qua tổng tuần của cả 4 đội chứ không thể đưa qua tổng tuần của từng đội để in báo cáo
Vậy kính mong sự giúp đỡ của cả nhà
mình có gữi file kèm theo
 

File đính kèm

  • vidu.xlsx
    26.2 KB · Đọc: 3
Xin chào cả nhà:
mình cần đưa dữ liệu từ sheet1 sang bctuan một cách tự động
khi nhập liệu vào sheet1 không theo thứ tự các đội nhưng khi đưa qua bctuan cần phải tính được tổng tuần.
Trong này mình chỉ có thể làm là đưa qua tổng tuần của cả 4 đội chứ không thể đưa qua tổng tuần của từng đội để in báo cáo
Vậy kính mong sự giúp đỡ của cả nhà
mình có gữi file kèm theo
Bạn không nên chen ngang bài của người khác (khi không có cùng chủ đề) sẽ vi phạm nội quy.
Vào Topic của bạn để hỏi tiếp.
https://www.giaiphapexcel.com/diendan/threads/help-nhờ-cả-nhà-chỉ-giáo-dùm.139968/#post-899096
 
Chào các bạn ! Mình có một vấn đề đang cần được giải quyết trong excel mà vẫn chưa giải quyết được. Mình đưa ra đây để mọi người cùng thảo luận và ai có cách nào làm được thì chỉ cho mình và mọi người nhé!

Vấn đề như sau:
Mình có một cột dữ liệu trong 1 bảng như sau:
000ô0A
1000 H01

2000 H01
3000 H01
4000 H02
5000 H02
6000 H03
7000 H03
8000 H03
9000 H03
1000 H04
1100 H04
1200 H04

Giờ mình muốn nhóm dữ liệu này lại vào một bảng khác để thành một cột như sau:
000000A
1000 H01
2000 H02
3000 H03
4000 H04

Mong các bạn trả lời giúp mình nhé ! Cảm ơn nhiều !

Câu hỏi của bạn có thể dùng hàm BS_SQL với thuộc tính GROUP( danh sách cột cần nhóm).
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom