Em chào anh chị GPE, chúc anh chị đầu năm mới sức khỏe và nhiều niềm vui ạ!
Sau khi học hỏi cách rút gọn bảng tính của anh chị ở bài này: https://www.giaiphapexcel.com/diend...h-và-thêm-dòng-tổng-cộng.158905/#post-1057014
Thì em đã áp dụng được vào file của em, nhưng có vấn đề là chỉ gộp và thêm dòng tổng cộng cho những tên hàng nào có 2 dòng liên tiếp trở lên, nếu có 1 dòng thì vẫn như cũ.
Đây là bảng gốc:
Đây là kết quả sau khi áp dụng bài trước cho ra:
Nhưng có những sản phẩm chỉ xuất hiện 1 lần nên e không thêm dòng tổng cộng và vẫn hiện như sheet nhập liệu, em muốn như thế này:
Đây là code của em đã viết ạ, anh chị giúp em chỉnh code để được bảng trên ạ. Em cám ơn nhiều!
Những sản phẩm giống nhau em sẽ để gần nhau ạ!
Sau khi học hỏi cách rút gọn bảng tính của anh chị ở bài này: https://www.giaiphapexcel.com/diend...h-và-thêm-dòng-tổng-cộng.158905/#post-1057014
Thì em đã áp dụng được vào file của em, nhưng có vấn đề là chỉ gộp và thêm dòng tổng cộng cho những tên hàng nào có 2 dòng liên tiếp trở lên, nếu có 1 dòng thì vẫn như cũ.
Đây là bảng gốc:
Đây là kết quả sau khi áp dụng bài trước cho ra:
Nhưng có những sản phẩm chỉ xuất hiện 1 lần nên e không thêm dòng tổng cộng và vẫn hiện như sheet nhập liệu, em muốn như thế này:
Đây là code của em đã viết ạ, anh chị giúp em chỉnh code để được bảng trên ạ. Em cám ơn nhiều!
Mã:
Sub LayDuLieuSangTrangIn()
Dim sArr(), dArr(1 To 10000, 1 To 10), i%, j%, Total(4 To 9) As Double, k%, aRow%, lr As Long
lr = ShList.Range("C222").End(xlUp).Row
sArr = Sheets("ShList").Range("B21:J" & lr).Value
k = 0: aRow = UBound(sArr)
For i = 1 To aRow
k = k + 1
If i <> 1 Then
If (sArr(i, 2) <> sArr(i - 1, 2)) Then
For j = 4 To 9
dArr(k, j) = Total(j)
Total(j) = 0
Next j
k = k + 1
dArr(k, 1) = sArr(i, 1)
dArr(k, 2) = sArr(i, 2)
dArr(k, 3) = sArr(i, 3)
dArr(k, 4) = sArr(i, 4)
dArr(k, 5) = sArr(i, 5)
dArr(k, 6) = sArr(i, 6)
dArr(k, 7) = sArr(i, 7)
Total(8) = sArr(i, 8)
Total(4) = Total(4) + sArr(i, 4)
Total(7) = Total(7) + sArr(i, 7)
Total(9) = Total(9) + sArr(i, 9)
Else
dArr(k, 1) = sArr(i, 1)
dArr(k, 3) = sArr(i, 3)
dArr(k, 4) = sArr(i, 4)
dArr(k, 5) = sArr(i, 5)
dArr(k, 6) = sArr(i, 6)
dArr(k, 7) = sArr(i, 7)
Total(8) = sArr(i, 8)
Total(4) = Total(4) + sArr(i, 4)
Total(7) = Total(7) + sArr(i, 7)
Total(9) = Total(9) + sArr(i, 9)
End If
Else
dArr(k, 1) = sArr(i, 1)
dArr(k, 2) = sArr(i, 2)
dArr(k, 3) = sArr(i, 3)
dArr(k, 4) = sArr(i, 4)
dArr(k, 5) = sArr(i, 5)
dArr(k, 6) = sArr(i, 6)
dArr(k, 7) = sArr(i, 7)
Total(8) = sArr(i, 8)
Total(4) = Total(4) + sArr(i, 4)
Total(7) = Total(7) + sArr(i, 7)
Total(9) = Total(9) + sArr(i, 9)
End If
Next i
Sheets("Phieuin").Range("B21:S220").ClearContents
If k Then
k = k + 1
For j = 4 To 9
dArr(k, j) = Total(j)
Next j
If k < 200 Then
Sheets("Phieuin").Range("B21").Resize(k, 10).Value = dArr
Else
MsgBox "Du lieu qua lon vuot qua 200 dong! Khong the in phieu!"
End If
End If
End Sub
Những sản phẩm giống nhau em sẽ để gần nhau ạ!