WorksheetFunction.SumIfs() trong VBA tính sai

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nvhieutk

Thành viên mới
Tham gia
18/9/24
Bài viết
6
Được thích
0
nhờ các bác giúp em sao code tính sai kết quả (D4:D8 có số liệu số tiền, B4:B8 có số liệu ngày):
WorksheetFunction.SumIfs(ws.Range("D4:D8"), _
ws.Range("B4:B8"), ">=" & tungay, ws.Range("B4:B8"), "<=" & denngay)
 

File đính kèm

  • Tinh_thu.xlsm
    19.4 KB · Đọc: 5
nhờ các bác giúp em sao code tính sai kết quả (D4:D8 có số liệu số tiền, B4:B8 có số liệu ngày):
WorksheetFunction.SumIfs(ws.Range("D4:D8"), _
ws.Range("B4:B8"), ">=" & tungay, ws.Range("B4:B8"), "<=" & denngay)
Sửa tungay = ws.Range("D2").Value
thành tungay = CLng(ws.Range("D2").Value)

Tương tự là denngay
 
Upvote 0
Bạn sửa thế nào chụp hình tôi xem

1726638791787.png
 
Upvote 0
Bạn sửa thế nào chụp hình tôi xem

View attachment 304037

Sửa tungay = ws.Range("D2").Value
thành tungay = CLng(ws.Range("D2").Value)

Tương tự là denngay

Bạn sửa thế nào chụp hình tôi xem

View attachment 304037

sửa như thế này bác ơi:
Dim tungay, denngay, ST, ws As Worksheet
Set ws = Worksheets("Sheet2")
tungay = CLng(ws.Range("D2").Value)
denngay = CLng(ws.Range("E2").Value)


ST = WorksheetFunction.SumIfs(ws.Range("D4:D8"), _
ws.Range("B4:B8"), ">=" & tungay, ws.Range("B4:B8"), "<=" & denngay)
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Nhân tiện hỏi thêm bác, Dữ liệu cùng kiểu (ngày/tháng/năm) sao thêm CLng lai được nhỉ?
Clng là hàm để chuyển ngày và text thành dạng số. Điểm đặc biệt là VBA thường xét ngày có định dạng mm/dd/yyyy mới hợp lệ, không như Excel. Tuy vậy, ngày có bản chất là số nên chuyển về số cho cả 2 đều chấp nhận.
 
Upvote 0
Các hàm Cxxxx này nọ là dùng để ép kiểu (type coercion), hoặc xác định cho rõ kiểu dữ liệu.
Clng, theo cái tên của nó đã trả lời rõ rệt là nó sẽ ép kiểu và trả về số nguyên.

CLng sẽ ép kiểu ngày hoặc chuỗi text sang số nguyên.
Lưu ý từ "số nguyên" có nghĩa là phần thập phân sẽ bị cắt bỏ. Dân chuyên VBA dùng tính chất này để cắt bỏ phần giờ phút trong biến kiểu Date. Ngày trong VBA và Excel là dạng số thực, phần nguyên là ngày tháng, phần thập phân là giờ phút...
 
Upvote 0
Lưu ý từ "số nguyên" có nghĩa là phần thập phân sẽ bị cắt bỏ. Dân chuyên VBA dùng tính chất này để cắt bỏ phần giờ phút trong biến kiểu Date. Ngày trong VBA và Excel là dạng số thực, phần nguyên là ngày tháng, phần thập phân là giờ phút...
Ồ. giờ cháu mới biết cái này nè. Nói như này thì thực tế có thể thay thế cho hàm Int được phải không chú?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom