Bạn kiểm tra xem đúng chưa nhaChào mọi người, em gặp vấn đề với công việc, em cần chuyển đổi ở Cột H sang thành hàng, tương ứng với các lí trình và các lớp như ở file dưới đây. Mong mọi người giúp đỡ.
Bài đã được tự động gộp:
không ai giúp đỡ em với ạ
Cảm ơn bạn, nhưng có cái đối với file của bạn thì mình làm được, nhưng sao cũng câu lệnh đó mà sang file của mình lại không được nhỉ????Bạn kiểm tra xem đúng chưa nha
L3=SUMPRODUCT(--($C$3:$C$2218=$J3),--($D$3:$D$2218=RIGHT(L$2,LEN(L$2)-FIND(" ",L$2))*1),$H$3:$H$2218)
Hay vậy taCảm ơn bạn, nhưng có cái đối với file của bạn thì mình làm được, nhưng sao cũng câu lệnh đó mà sang file của mình lại không được nhỉ????
À mình nhầm một vài giá trị nên không được, cái này áp dụng cho khá nhiều file của mình, giờ được rồi.Hay vậy ta. File bạn gửi lên vẫn là file của bạn mà, mình có thay đổi gì đâu. Bạn gửi lại cái file của bạn lên xem có gì khác không nếu nó không phải là bí mật
![]()
Sub Tonghop()
Dim Dic As Object, Tem As String
Dim Rng As Range, N As Long
Dim sArr(), dArr(), I As Long, J As Long, K As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("C3", Range("C" & Rows.Count).End(3)).Resize(, 6).Value
Set Rng = Range("D3", Range("D" & Rows.Count).End(3))
N = Application.Max(Rng)
ReDim dArr(1 To UBound(sArr, 1), 1 To N + 3)
For I = 1 To UBound(sArr, 1)
If sArr(I, 2) <> Empty Then
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = K: dArr(K, 2) = Tem
J = sArr(I, 2) + 3: dArr(K, J) = sArr(I, 6)
Else
J = sArr(I, 2) + 3: dArr(Dic.Item(Tem), J) = sArr(I, 6)
End If
End If
Next I
Range("I3").Resize(UBound(sArr, 1), UBound(sArr, 2)).ClearContents
Range("I3").Resize(K, UBound(dArr, 2)) = dArr
Set Dic = Nothing
End Sub
report nhé. Đùa thôi, có thêm cái vba này thì càng tốt rồi, có thêm cái để học hỏi. Cảm ơn bạn nhiều.Cho em góp vui với.
OáiPHP:Sub Tonghop() Dim Dic As Object, Tem As String Dim Rng As Range, N As Long Dim sArr(), dArr(), I As Long, J As Long, K As Long Set Dic = CreateObject("Scripting.Dictionary") sArr = Range("C3", Range("C" & Rows.Count).End(3)).Resize(, 6).Value Set Rng = Range("D3", Range("D" & Rows.Count).End(3)) N = Application.Max(Rng) ReDim dArr(1 To UBound(sArr, 1), 1 To N + 3) For I = 1 To UBound(sArr, 1) If sArr(I, 2) <> Empty Then Tem = sArr(I, 1) If Not Dic.Exists(Tem) Then K = K + 1 Dic.Add Tem, K dArr(K, 1) = K: dArr(K, 2) = Tem J = sArr(I, 2) + 3: dArr(K, J) = sArr(I, 6) Else J = sArr(I, 2) + 3: dArr(Dic.Item(Tem), J) = sArr(I, 6) End If End If Next I Range("I3").Resize(UBound(sArr, 1), UBound(sArr, 2)).ClearContents Range("I3").Resize(K, UBound(dArr, 2)) = dArr Set Dic = Nothing End Sub
ngại quá. Bài đăng trong Box "Hàm và công thức" mà lại đi làm bằng VBA
![]()