Cho em hỏi về hàm sumifs với listbox

Liên hệ QC

ungthienhai

Thành viên mới
Tham gia
3/9/16
Bài viết
25
Được thích
2
With Me.ListBox1
If ListBox1.ListCount > 0 Then
For i = 0 To .ListCount - 1
mysumi = mysumi + Application.WorksheetFunction.SumIfs(.List(i, 5), .List(i, 6), TextBox3.Value, _
.List(i, 0), ">=" & TextBox1.Value, .List(i, 0), "<=" & TextBox2.Value)

Next i

'KETQUA = WorksheetFunction.SumIfs(total, THUNGAN, TextBox3.Value, THOIGIAN, _
">=" & TextBox1.Value, THOIGIAN, "<=" & TextBox2.Value)
Sheet16.Range("F3").Value = mysumi
Em dùng code như vậy thì báo lỗi error 424 không thể chạy, cho em hỏi code đã sai chỗ nào vậy?
Em xin cảm ơn.
 
Ngày mai em đi ...
Mã:
For i = 0 To .ListCount - 1
mysumi = mysumi + Application.WorksheetFunction.SumIfs(.List(i, 5), .List(i, 6), TextBox3.Value, _
.List(i, 0), ">=" & TextBox1.Value, .List(i, 0), "<=" & TextBox2.Value)

Next i

Hàm SUMIFS có tham số 1, 2, 4, 6 là các VÙNG TRÊN Sheet. Thậm chí MẢNG GIÁ TRỊ còn không được phép huống chi những giá trị đơn kiểu .List(i, 5), .List(i, 6).

Nếu là cộng dồn với các điều kiện thì có vẻ thế này - nhìn lướt qua thôi, không mang đầu ra đảm bảo
Mã:
For i = 0 To .ListCount - 1
    If .List(i, 6) = TextBox3.Value And .List(i, 0) >= CDbl(TextBox1.Value) And .List(i, 0) <= CDbl(TextBox2.Value) Then
        mysumi = mysumi + .List(i, 5)
    End If
Next i
 
Upvote 0
Ngày mai em đi ...
Mã:
For i = 0 To .ListCount - 1
mysumi = mysumi + Application.WorksheetFunction.SumIfs(.List(i, 5), .List(i, 6), TextBox3.Value, _
.List(i, 0), ">=" & TextBox1.Value, .List(i, 0), "<=" & TextBox2.Value)

Next i

Hàm SUMIFS có tham số 1, 2, 4, 6 là các VÙNG TRÊN Sheet. Thậm chí MẢNG GIÁ TRỊ còn không được phép huống chi những giá trị đơn kiểu .List(i, 5), .List(i, 6).

Nếu là cộng dồn với các điều kiện thì có vẻ thế này - nhìn lướt qua thôi, không mang đầu ra đảm bảo
Mã:
For i = 0 To .ListCount - 1
    If .List(i, 6) = TextBox3.Value And .List(i, 0) >= CDbl(TextBox1.Value) And .List(i, 0) <= CDbl(TextBox2.Value) Then
        mysumi = mysumi + .List(i, 5)
    End If
Next i
ý của bác là nếu data quá lớn khoảng 10 nghìn dòng sẽ bị ảnh hưởng? Vì em dự trung bình mỗi ngày data sẽ có thêm 10-20 dòng nhập vào
Bài đã được tự động gộp:

sh.Range("F3").Value = Application.WorksheetFunction.SumIfs(sh.Range("g:g").Value, sh.Range("h:h").Value, _
TextBox3.Value, sh.Range("b:b").Value, ">=" & TextBox1.Value, sh.Range("b:b").Value, "<=" & TextBox2.Value)
Em viết lại như vậy được không bác?
 
Lần chỉnh sửa cuối:
Upvote 0
Private Sub CommandButton1_Click()
Dim mysumi As Double
Dim i As Long
Dim sh As Worksheet
mysumi = 0
Set sh = Sheet15
Dim tongthanhtoan As Double
Dim thoigian As Date
Dim thungan As String

tongthanhtoan = sh.Range("g:g").Value
thoigian = sh.Range("b:b").Value
thungan = sh.Range("h:h").Value


With Sheet16

.Range("F3").Value = Application.WorksheetFunction.SumIfs(tongthanhtoan, thungan, _
TextBox3.Value, thoigian, ">=" & TextBox1.Value, thoigian, "<=" & TextBox2.Value)
End With
End Sub

Em viết lại như vậy
 
Upvote 0
ý của bác là nếu data quá lớn khoảng 10 nghìn dòng sẽ bị ảnh hưởng? Vì em dự trung bình mỗi ngày data sẽ có thêm 10-20 dòng nhập vào

Em viết lại như vậy được không bác?
Ý của bác "ngày mai em đi" không hề có 1 chữ nào là nhiều dòng bị ảnh hưởng. Nó chỉ mang nghĩa là 2 giá trị trở lên mà không phải ô trên bảng tính thì không xài được.
Viết lại thế ấy, có được hay không thì tự kiểm chứng sẽ biết, không cần hỏi.
 
Upvote 0
Các anh ơi, cho em hỏi em dùng hàm sumifs này trong form mà sao nó lại kết quả bằng 0, và sai ở đoạn này ạ, , Sheet8.Range("C4:C15000"), "<=" & CDate(Txt_denngay.Value))
Nhờ các a sửa lại giúp em với ạ.
Textbox1 = WorksheetFunction.SumIfs(Sheet8.Range("K4:K15000"), Sheet8.Range("J4:J15000"), "5111", Sheet8.Range("C4:C15000"), ">=" & CDate(Txt_tungay.Value), Sheet8.Range("C4:C15000"), "<=" & CDate(Txt_denngay.Value))
 
Upvote 0
Web KT

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

Back
Top Bottom