Nhóm dữ liệu giống nhau
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/
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
Bình luận