Hàm sắp xếp dữ liệu, loại bỏ ô trống và tính tổng các giá trị tham số theo ô.
Mình có một vấn đề thế này, mình có một phụ lục, có dữ liệu vài cột, có hàm nào công thức nào để sắp xếp dữ liệu như bên hình dưới không, mình đang dùng excel 2010. Cảm ơn mọi người.
1348
Bạn tham khảo:
Option Explicit
Sub Run()
Dim dic As Object
Dim sheet As Worksheet
Dim data As Variant, result As Variant, key As Variant
Dim r As Integer, i As Integer, k As Integer
Dim d As Double
Set sheet = ThisWorkbook.ActiveSheet
r = sheet.Cells(sheet.Rows.Count, "A").End(xlUp).Row
sheet.Range("D1").Resize(10000, 7).ClearContents
data = sheet.Range("A1:A" & r).Resize(, 2).Value
sheet.Range("D1:D" & r).Resize(, 2).Value = data
With sheet.Sort
.SortFields.Clear
.SortFields.Add key:=sheet.Range("D1"), Order:=xlAscending
.SortFields.Add key:=sheet.Range("E1"), Order:=xlAscending
.SetRange sheet.Range("D1:D" & r).Resize(, 2)
.Header = xlNo
.Apply
End With
data = sheet.Range("D1:D" & r).Resize(, 2).Value
ReDim result(1 To r, 1 To 2)
Set dic = CreateObject("Scripting.Dictionary")
dic.CompareMode = TextCompare
For i = LBound(data, 1) To UBound(data, 1)
key = data(i, 1): d = data(i, 2)
If Len(key) > 0 Then
If Not dic.Exists(key) Then
k = k + 1
dic.Add key, k
result(k, 1) = key
result(k, 2) = d
Else
r = dic.Item(key)
result(r, 2) = result(r, 2) + d
End If
End If
Next i
sheet.Range("G1").Resize(k, 2).Value = result
End Sub
Sort theo cột D không cần dùng dic
Con chào bác ạ, bác khỏe không bác?
Con cảm ơn bác đã chỉ dẫn, con thấy cách làm của con hơi dài bác ạ:
....
data = sheet.Range("D1:D" & r).Resize(, 2).Value
ReDim result(1 To r, 1 To 2)
For i = LBound(data, 1) To UBound(data, 1)
key = data(i, 1): d = data(i, 2)
If Len(key) > 0 Then
If k > 0 Then
If result(k, 1) = key Then
result(k, 2) = result(k, 2) + d
Else
k = k + 1
result(k, 1) = key
result(k, 2) = d
End If
Else
k = k + 1
result(k, 1) = key
result(k, 2) = d
End If
End If
Next i
...
Chỉ cần
.... For i = LBound(data, 1) To UBound(data, 1) If data(i, 1) <> empty Then If key <> data(i, 1) Then key = data(i, 1) k = k + 1 result(k, 1) = key end if result(k, 2) = result(k, 2) + data(i, 2) End If Next i ....
www.giaiphapexcel.com/diendan/threads/h%C3%A0m-s%E1%BA%AFp-x%E1%BA%BFp-d%E1%BB%AF-li%E1%BB%87u-lo%E1%BA%A1i-b%E1%BB%8F-%C3%B4-tr%E1%BB%91ng-v%C3%A0-t%C3%ADnh-t%E1%BB%95ng-c%C3%A1c-gi%C3%A1-tr%E1%BB%8B-tham-s%E1%BB%91-theo-%C3%B4.163635/post-1091408
Khóa học SprinGO phù hợp
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Thử kiểm tra lại xem sao.