nguyenminh121a122
Thành viên mới

- Tham gia
- 11/5/21
- Bài viết
- 27
- Được thích
- 9
Thế bạn muốn Sort cột nào vậy?Anh/Chị xem giúp em để câu lệnh sort ở đâu thì cho kết quả đúng. Em sửa lại nó bị chạy kết quả tán loạn rồi.
Cảm ơn các anh chị rất nhiều !!!
Mình sort đúng cột rồi, cột 2 (cột ngày tháng). nhưng kết quả thì bị sai.Thế bạn muốn Sort cột nào vậy?
Đâu bạn thử sửa chỗ này:Mình sort đúng cột rồi, cột 2 (cột ngày tháng). nhưng kết quả thì bị sai.
Đâu bạn thử sửa chỗ này:
With Sheet25.Range("D23:O1000")
.Sort .Cells(1, 2), xlAscending
End With
Thành cái này xem sao:
Sheet25.Range("D23:O1000").Sort Sheet25.Range("E23")
Vậy thì bạn xóa hẳn Sort ở chỗ đó đi thay chỗ này:Sort thì được nhưng kết quả tính toán vẫn bị sai anh ơi.
With Sheet25.[D23:O23].Resize(k)
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Sort .Cells(1, 2), xlAscending
End With
With Sheet25.[D23:O23].Resize(k)
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Sort Sheet25.Range("E23")
End With
- sort mảng trước khi ghi kết quả ra sheet thì cũng vẫn vậy.Cột Tồn lũy kế mà bạn sort thì đương nhiên kết quả sai rồi. Bạn thử một trong các cách sau thử:
- Một là bạn sort mảng trước khi ghi kết quả ra sheet
- Hai là giá trị tại cột M, N ghi ra dùng công thức Formular
Nên dùng auto filter, muốn gì sort đấy, cho nhanh và hiệu quảAnh/Chị xem giúp em để câu lệnh sort ở đâu thì cho kết quả đúng. Em sửa lại nó bị chạy kết quả tán loạn rồi.
Cảm ơn các anh chị rất nhiều !!!
Range("M23").resize(k).FormulaR1C1 = "= R21C13 + Sum(R23C9:RC9) - Sum(R23C11:RC11)"
dkSL = Cells(21, 13).value
If i = 1 then
ArrNew(i, 10) = dkSL + arrNew(i, 6) - arrNew(i, 8)
Else
ArrNew(i, 10) = arrNew(i - 1, 10) + arrNew(i, 6) - arrNew(i, 8)
End if
Bạn sửa lại 2 dòng sort:Anh/Chị xem giúp em để câu lệnh sort ở đâu thì cho kết quả đúng. Em sửa lại nó bị chạy kết quả tán loạn rồi.
Cảm ơn các anh chị rất nhiều !!!
.sort .Cells(1, 2), xlAscending
.sort .Cells(23, 4), xlAscending
Xem hình
View attachment 265845
Thời điểm (1) trên sheet đang có kết quả cũ hoặc đang trống, mảng kết quả chỉ đưa xuống ở thời điểm (3). Sort lúc này là vô nghĩa vì sẽ bị xoá
Thời điểm (2): Mảng chưa sort, gắn kết quả cứng vào các dòng của dArr chưa sort
Thời điểm (3): Gán mảng chưa sort xuống sheet.
Thời điểm (4): Sort giá trị cứng, dòng dưới bị đưa lên trên cùng với giá trị cứng của 2 cột 10 và 11.
Khi em làm thế nầy, em dùng công thưc thì bị sai. Anh có thể "Soi" giúp em một chút được không. Em không biết dùng cách nào nữa rồi.Các bước thực hiện thế này:
- Gán giá trị cho mảng kết quả các cột từ 1 đến 9 và cột 12, bỏ 2 cột 10 và 11 rỗng.
- Đưa mảng kết quả xuống
- Sort trên sheet
Cách 1: Gán công thức:
Công thức đúng cho kết quả không có dòng tổng mỗi tháng. Bạn chèn dòng cộng từng tháng vào làm sao còn đúng nữa? Huống chi con số chèn vào đang tính sai: Đầu tháng này phải lấy cuối tháng trước, chứ đâu phải lấy đầu kỳ ở dòng 21.Khi em làm thế nầy, em dùng công thưc thì bị sai. Anh có thể "Soi" giúp em một chút được không. Em không biết dùng cách nào nữa rồi.
Em dùng kết quả chạy bằng mảng thì chạy đúng. Nhưng với code nầy do em không sort được nên 2 cột 11 và 12 chạy sai kết quả. Anh có cách nào khác không? chỉ giúp em với.Công thức đúng cho kết quả không có dòng tổng mỗi tháng. Bạn chèn dòng cộng từng tháng vào làm sao còn đúng nữa? Huống chi con số chèn vào đang tính sai: Đầu tháng này phải lấy cuối tháng trước, chứ đâu phải lấy đầu kỳ ở dòng 21.
Sheet25.Range("M23").Resize(k).FormulaR1C1 = "= R21C13 + Sumif(R23C4:RC4,""<>"",R23C9:RC9) - Sumif(R23C4:RC4,""<>"",R23C11:RC11)"
Sheet25.Range("N23").Resize(k).FormulaR1C1 = "= R21C14 + Sumif(R23C4:RC4,""<>"",R23C10:RC10) - Sumif(R23C4:RC4,""<>"",R23C12:RC12)"
Dạ vâng ! cảm ơn anh rất nhiều. để em căn cứ vào lời bình mà thực hiện thử xem sao.Dùng công thức SumIf như sau:
Quan trọng là:Mã:Sheet25.Range("M23").Resize(k).FormulaR1C1 = "= R21C13 + Sumif(R23C4:RC4,""<>"",R23C9:RC9) - Sumif(R23C4:RC4,""<>"",R23C11:RC11)" Sheet25.Range("N23").Resize(k).FormulaR1C1 = "= R21C14 + Sumif(R23C4:RC4,""<>"",R23C10:RC10) - Sumif(R23C4:RC4,""<>"",R23C12:RC12)"
- Sort sheet trước khi gán công thức. Nếu sort sau khi gán công thức thì chỉ sort từ cột D đến cột L. Làm được điều này thì công thức nào cũng không lỗi. Trừ khi cột O có ghi chú cần sort theo thì bắt buộc phải sort trước.
- Chèn dòng vẫn ra kết quả đúng, còn bản thân dòng chèn sai thì tôi đã nói nguyên nhân ở trên.
Còn thử gì nữa? Tôi trước khi trả lời là tôi đã test kết quả rồi. Chỉ cần làm theo đúng những gì tôi khuyến cáo thôi.Dạ vâng ! cảm ơn anh rất nhiều. để em căn cứ vào lời bình mà thực hiện thử xem sao.
Dạ đa tạ anh rất nhiều !!!! mặc dù công thức hơi bất tiện khi kết xuất một chút nhưng chạy vẫn rất nhanh và làm file không nặng lắm. Xin cảm ơn anh đã quan tâm giúp đỡ cho em.Còn thử gì nữa? Tôi trước khi trả lời là tôi đã test kết quả rồi. Chỉ cần làm theo đúng những gì tôi khuyến cáo thôi.