Hoàng Nhật Phương
Thành viên gắn bó
- Tham gia
- 5/11/15
- Bài viết
- 1,894
- Được thích
- 1,214
Quá tuyệt, nhưng lần cuối làm phiền bạn là bên kế toán cần bổ sung thêm cột ở Sheet "Du lieu" thì chỉnh sửa như thế nào.
Xin lỗi đã làm phiền bạn chỉnh sửa nhiều lần. Cảm ơn sự hỗ trợ rất nhiệt tình này
View attachment 252459
Híc mấy bữa nay ngủ OT toàn mơ về code không à, bạn chú ý sửa 2 dòng này nhé:
Const SoCotThemVao As Long = 15 'Số cột thêm sheet KQ
Const CotDuLieuThem As Long = 8 'Số cột thêm sheet Dữ liệu
Mã:
Option Explicit
Sub Khong_Tot_Lam()
Dim aDULIEU() As Variant, aSaoLaiMaHang() As Variant, aKETQUA() As Variant
Dim iMa As Long, jPhong As Long, r As Long, SoDong As Long, SoCot As Long, Wb As Workbook
Const O_Nhap_Lieu_Dau_Tien As String = "B4"
Const SoCotThemVao As Long = 15'Số cột thêm sheet KQ
Const CotDuLieuThem As Long = 8 'Số cột thêm sheet Dữ liệu
Set Wb = ThisWorkbook
With Wb.Worksheets("Du lieu")
SoDong = .Cells(.Rows.Count, "B").End(xlUp).Row
SoCot = .Cells(3, .Columns.Count).End(xlToLeft).Column
If SoDong < 4 Or SoCot < 3 + CotDuLieuThem Then
MsgBox "Khong co du lieu dau vao": Exit Sub
End If
SoDong = SoDong - 2: SoCot = SoCot - 1
aDULIEU = .Range("B3").Resize(SoDong, SoCot).Value2
SoCot = SoCot - (1 + CotDuLieuThem)
SoDong = SoDong - 1
ReDim aSaoLaiMaHang(1 To SoDong * SoCot, 1 To 2)
ReDim aKETQUA(1 To SoDong * SoCot, 1 To 2)
End With
With Wb.Worksheets("KQ")
SoCot = 2 + CotDuLieuThem
For jPhong = SoCot To UBound(aDULIEU, 2)
For iMa = 2 To UBound(aDULIEU, 1)
r = r + 1
aSaoLaiMaHang(r, 1) = r
aSaoLaiMaHang(r, 2) = aDULIEU(iMa, 1)
aKETQUA(r, 1) = aDULIEU(1, jPhong)
aKETQUA(r, 2) = aDULIEU(iMa, jPhong)
Next iMa
Next jPhong
SoDong = .Cells(.Rows.Count, "B").End(xlUp).Row
If SoDong > 3 Then
SoDong = SoDong - 3
.Range(O_Nhap_Lieu_Dau_Tien).Resize(SoDong, SoCotThemVao + 4).ClearContents
End If
With .Range(O_Nhap_Lieu_Dau_Tien)
.Resize(r, 2) = aSaoLaiMaHang
.Offset(, SoCotThemVao + 2).Resize(r, 2) = aKETQUA
End With
End With
End Sub