langkhachquaduong
Thành viên chính thức
- Tham gia
- 23/7/19
- Bài viết
- 50
- Được thích
- 8
Bạn kiểm tra file dưới xem sao.Mình đã viết code sử dụng dictionary nhưng không được nên mình đã xóa hết code. Bên sheet báo cáo là kết quả mình mong muốn. Có bạn nào giúp mình được không. Xin cám ơn.
Hình như bạn đưa ra ví dụ tại sheet kết quả là sai vì trong sheet bán và sheet thu không có ngày nào nhỏ hơn ngày 01/01/2020 và không có ngày nào lớn hơn ngày 03/07/2020, có nghĩa khi lọc ra thì sheet kết quả sẽ bằng sheet bán và sheet thu (gộp lại).Mình đã viết code sử dụng dictionary nhưng không được nên mình đã xóa hết code. Bên sheet báo cáo là kết quả mình mong muốn. Có bạn nào giúp mình được không. Xin cám ơn.
Bạn tham khảo file nay xem có giúp gì được bạn khôngMình đã viết code sử dụng dictionary nhưng không được nên mình đã xóa hết code. Bên sheet báo cáo là kết quả mình mong muốn. Có bạn nào giúp mình được không. Xin cám ơn.
Xin lỗi Nhất Chi Lan - Hình như đoạn code dArr(K, 7) = "=RC[-2]+RC[-1] cho cột G sheet "báo cáo" có "gì gì" đó "sai sai" hay sao vậy ???Bạn tham khảo file nay xem có giúp gì được bạn không
Bạn kiểm tra kỹ lại kết quả mong muốn của bạn có chính xác chưa mới tính được.Mình đã viết code sử dụng dictionary nhưng không được nên mình đã xóa hết code. Bên sheet báo cáo là kết quả mình mong muốn. Có bạn nào giúp mình được không. Xin cám ơn.
Cái này tìm trong khoảng từ ngày 01/01/2020 đến 07/03/2020 mà bạn.Hình như bạn đưa ra ví dụ tại sheet kết quả là sai vì trong sheet bán và sheet thu không có ngày nào nhỏ hơn ngày 01/01/2020 và không có ngày nào lớn hơn ngày 03/07/2020, có nghĩa khi lọc ra thì sheet kết quả sẽ bằng sheet bán và sheet thu (gộp lại).
Ý mình muốn là ở bên sheet bánBạn kiểm tra file dưới xem sao.
Công thức như vậy chính xác rồi mà.Bạn kiểm tra kỹ lại kết quả mong muốn của bạn có chính xác chưa mới tính được.
Công thức trong cột G từ trên xuống cũng không thống nhất.
Sao 2 ô G11 và G12 Tại Sheets("báo cáo") nó lại như vầy nhỉCông thức như vậy chính xác rồi mà.
G11=SUM($E$9:E12)-SUM($F$9:F12)
G12=SUM($E$9:E12)-SUM($F$9:F12)
Mình ktra như vậy mà:Sao 2 ô G11 và G12 Tại Sheets("báo cáo") nó lại như vầy nhỉ
Mã:G11=SUM($E$9:E12)-SUM($F$9:F12) G12=SUM($E$9:E12)-SUM($F$9:F12)
Cái này tìm trong khoảng từ ngày 01/01/2020 đến 07/03/2020 mà bạn.
Bài đã được tự động gộp:
Ý mình muốn là ở bên sheet bán
04/01/2020 mặt hàng a1 có thành tiền 100.000
04/01/2020 mặt hàng a1 có thành tiền 200.000
Nhưng sang sheet báo cáo gộp tổng 2 mặt hàng giống nhau cùng ngày thành 1
04/01/2020 mặt hàng a1 có thành tiền 300.000
Bài đã được tự động gộp:
Bạn kiểm tra lại file dưới xem sao.
Công thức như vậy chính xác rồi mà.
Bạn kiểm tra lại file dưới xem sao.Cái này tìm trong khoảng từ ngày 01/01/2020 đến 07/03/2020 mà bạn.
Bài đã được tự động gộp:
Ý mình muốn là ở bên sheet bán
04/01/2020 mặt hàng a1 có thành tiền 100.000
04/01/2020 mặt hàng a1 có thành tiền 200.000
Nhưng sang sheet báo cáo gộp tổng 2 mặt hàng giống nhau cùng ngày thành 1
04/01/2020 mặt hàng a1 có thành tiền 300.000
Bài đã được tự động gộp:
Công thức như vậy chính xác rồi mà.
Cùng 1 ngày bên nợ ghi trước bên có ghi sau, file gốc nhầm thứ tự dòngMáy mình nó như vầy nè
View attachment 233736
Mình ktra như vậy mà:
G11=SUM($E$9:E11)-SUM($F$9:F11)
G12=SUM($E$9:E12)-SUM($F$9:F12)
Bạn kiểm tra lại xem
Đây là file tôi tải từ bài #1Công thức như vậy chính xác rồi mà.
Cám ơn bạn. Mình áp dụng theo code của bạn và nhất chi lan để viết theo ý mình. Mình tính tổng mục giống nhau ở cột nợ và có thì chưa biết làm sao. Mình gửi file lên nhờ bạn giúp đỡ.Bạn kiểm tra lại file dưới xem sao.
mình chưa hiểu ý bạn. Bạn gửi ví dụ lên cho dễ hiểu.Cám ơn bạn. Mình áp dụng theo code của bạn và nhất chi lan để viết theo ý mình. Mình tính tổng mục giống nhau ở cột nợ và có thì chưa biết làm sao. Mình gửi file lên nhờ bạn giúp đỡ.
Bạn gửi file minh xem lại coiMáy mình nó như vầy nè
View attachment 233736
Dữ liệu phải nhập đúng chuẩn. Chạy codeBạn gửi file minh xem lại coi
Bài đã được tự động gộp:
Mình gửi lại file
Sub XYZ()
Dim sArr(), aCol(), Res()
Dim fDate As Date, eDate As Date
Dim i&, k&, kHang$, colNo$
With Sheet1
aBan = .Range("A2", .Range("G" & Rows.Count).End(xlUp)).Value
End With
With Sheet2
aThu = .Range("A2", .Range("F" & Rows.Count).End(xlUp)).Value
End With
With Sheet3
i = .Range("A" & Rows.Count).End(xlUp).Row
If i > 8 Then .Range("A9:G" & i).Clear
fDate = .Range("C4").Value2
eDate = .Range("C5").Value2
kHang = .Range("C6").Value2
End With
ReDim Res(1 To UBound(aBan) + UBound(aThu), 1 To 7)
aCol = Array(0, 1, 2, 3, 4, 7)
Call AddRes(aBan, "XK", aCol, Res, k, fDate, eDate, kHang)
aCol = Array(0, 1, 3, 4, 5, 6)
Call AddRes(aThu, "PC", aCol, Res, k, fDate, eDate, kHang)
If k > 0 Then
With Sheet3
.Range("A9").Resize(k, 7) = Res
.Range("A9").Resize(k, 7).Sort .[A9], 1, Header:=xlNo
Res = .Range("E9").Resize(k + 1, 3)
For i = 1 To k
Res(i, 3) = Res(i, 1) - Res(i, 2)
If i > 1 Then Res(i, 3) = Res(i, 3) + Res(i - 1, 3)
Res(k + 1, 1) = Res(k + 1, 1) + Res(i, 1)
Res(k + 1, 2) = Res(k + 1, 2) + Res(i, 2)
Next i
.Range("E9").Resize(k + 1, 3) = Res
.Range("A" & k + 9) = "Tong"
.Range("A" & k + 9).Resize(, 4).MergeCells = True
.Range("A9").Resize(k + 1, 7).Borders.LineStyle = 1
End With
End If
End Sub
Private Sub AddRes(ByVal sArr, ByVal strNo, aCol, Res, k, fDate, eDate, kHang)
Dim sRow&, i&, jk&, Phieu$
sRow = UBound(sArr)
For i = 1 To sRow
If sArr(i, 1) > eDate Then Exit For
If sArr(i, 1) >= fDate And sArr(i, aCol(3)) = kHang Then
If Phieu <> sArr(i, aCol(2)) Then
Phieu = sArr(i, aCol(2))
k = k + 1
For j = 1 To 4
Res(k, j) = sArr(i, aCol(j))
Next j
If Left(Phieu, 2) = strNo Then jk = 5 Else jk = 6
Res(k, jk) = sArr(i, aCol(5))
Else
Res(k, jk) = Res(k, jk) + sArr(i, aCol(5))
End If
End If
Next i
End Sub
Bạn check lại xem thế nào (Mình mới chỉ sửa 1 ít code cho phần sheet bán, sheet thu tương tự bạn có thể tự sửa được).Bạn gửi file minh xem lại coi
Bài đã được tự động gộp:
Mình gửi lại file
Suy nghĩ mãi không ra.Cám ơn bạn nhiều.Bạn check lại xem thế nào (Mình mới chỉ sửa 1 ít code cho phần sheet bán, sheet thu tương tự bạn có thể tự sửa được).
Mình cám ơn bạn.Dữ liệu phải nhập đúng chuẩn. Chạy code
Mã:Sub XYZ() Dim sArr(), aCol(), Res() Dim fDate As Date, eDate As Date Dim i&, k&, kHang$, colNo$ With Sheet1 aBan = .Range("A2", .Range("G" & Rows.Count).End(xlUp)).Value End With With Sheet2 aThu = .Range("A2", .Range("F" & Rows.Count).End(xlUp)).Value End With With Sheet3 i = .Range("A" & Rows.Count).End(xlUp).Row If i > 8 Then .Range("A9:G" & i).Clear fDate = .Range("C4").Value2 eDate = .Range("C5").Value2 kHang = .Range("C6").Value2 End With ReDim Res(1 To UBound(aBan) + UBound(aThu), 1 To 7) aCol = Array(0, 1, 2, 3, 4, 7) Call AddRes(aBan, "XK", aCol, Res, k, fDate, eDate, kHang) aCol = Array(0, 1, 3, 4, 5, 6) Call AddRes(aThu, "PC", aCol, Res, k, fDate, eDate, kHang) If k > 0 Then With Sheet3 .Range("A9").Resize(k, 7) = Res .Range("A9").Resize(k, 7).Sort .[A9], 1, Header:=xlNo Res = .Range("E9").Resize(k + 1, 3) For i = 1 To k Res(i, 3) = Res(i, 1) - Res(i, 2) If i > 1 Then Res(i, 3) = Res(i, 3) + Res(i - 1, 3) Res(k + 1, 1) = Res(k + 1, 1) + Res(i, 1) Res(k + 1, 2) = Res(k + 1, 2) + Res(i, 2) Next i .Range("E9").Resize(k + 1, 3) = Res .Range("A" & k + 9) = "Tong" .Range("A" & k + 9).Resize(, 4).MergeCells = True .Range("A9").Resize(k + 1, 7).Borders.LineStyle = 1 End With End If End Sub Private Sub AddRes(ByVal sArr, ByVal strNo, aCol, Res, k, fDate, eDate, kHang) Dim sRow&, i&, jk&, Phieu$ sRow = UBound(sArr) For i = 1 To sRow If sArr(i, 1) > eDate Then Exit For If sArr(i, 1) >= fDate And sArr(i, aCol(3)) = kHang Then If Phieu <> sArr(i, aCol(2)) Then Phieu = sArr(i, aCol(2)) k = k + 1 For j = 1 To 4 Res(k, j) = sArr(i, aCol(j)) Next j If Left(Phieu, 2) = strNo Then jk = 5 Else jk = 6 Res(k, jk) = sArr(i, aCol(5)) Else Res(k, jk) = Res(k, jk) + sArr(i, aCol(5)) End If End If Next i End Sub