Nhóm dữ liệu giống nhau

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Mình có một bảng như bên dưới nhờ anh em diễn đàn giúp mình giải bài tập này:
Mình cần nhóm 3 ô giống nhau ở cột A và đánh số thứ tự qua cột B, cứ 3 ô giống nhau thành 1 nhóm sau khi nhóm hết thì 3 ô bất kì chưa được nhóm sẽ vào 1 nhóm. Cảm ơn anh em giúp đỡ

A

1

B

2

B

2

A

1

A

1

B

2

C

3

D

5

B

4

C

3

C

3

B

4

B

4

E

5

F

5

Code cho người muốn xem
Dữ liệu từ ô A2 xuống dưới

Sub XYZ()
  Dim a(), b, res(), dic As Object, key
  Dim sRow&, i&, k&, d&

Set dic = CreateObject("scripting.dictionary")
  a = Range("A2", Range("A" & Rows.Count).End(xlUp)).Value
  sRow = UBound(a)
  For i = 1 To sRow
    If dic.exists(a(i, 1)) = False Then
      dic(a(i, 1)) = Array(1, 0, 0, 0)
    Else
      b = dic(a(i, 1))
      b(0) = b(0) + 1
      dic(a(i, 1)) = b
    End If
  Next i
  For Each key In dic.keys
    b = dic(key)
    b(1) = Int(b(0) / 3)
    dic(key) = b
  Next key
  ReDim res(1 To sRow, 1 To 1)
  For i = 1 To sRow
    b = dic(a(i, 1))
    If b(1) > 0 Then
      If b(2) = 0 Then
        k = k + 1
        b(3) = k
      End If
      b(2) = b(2) + 1
      If b(2) = 3 Then
        b(1) = b(1) - 1
        b(2) = 0
      End If
    End If
    dic(a(i, 1)) = b
    res(i, 1) = b(3)
  Next i
  For i = 1 To sRow
    If res(i, 1) = Empty Then
      If d = 0 Then k = k + 1
      If d = 2 Then d = 0 Else d = d + 1
      res(i, 1) = k
    End If
  Next i
  Range("B2").Resize(sRow) = res
End Sub

www.giaiphapexcel.com/diendan/threads/nh%C3%B3m-d%E1%BB%AF-li%E1%BB%87u-gi%E1%BB%91ng-nhau.166262/

Xây dựng Lương 3P, KPI cho Doanh nghiệp
Khóa học SprinGO phù hợp

Xây dựng Lương 3P, KPI cho Doanh nghiệp

Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm