
Tại sheet 1 em có nhật ký bán hàng
giờ tại sheet 2 em muốn khi chọn mốc thời gian ở các ô B3 và D3 (ví dụ 01/01 -15/01)thì phía dưới sẽ cho ra kết quả doanh thu trong những ngày đó. Mong các bác giúp đỡ em ạ. Em cảm ơn![]()
Sub Ngay()
Dim Sarr, Darr, i&, k&, Fdate, Edate
With Sheet1
Sarr = .Range(.[A3], .[A50000].End(xlUp)).Resize(, 8).Value2
End With
ReDim Darr(1 To UBound(Sarr), 1 To 8)
With Sheet2
Fdate = .[B3]
Edate = .[D3]
For i = 1 To UBound(Sarr)
If Sarr(i, 2) >= Fdate And Sarr(i, 2) <= Edate Then
k = k + 1
Darr(k, 1) = k
For j = 2 To 8
Darr(k, j) = Sarr(i, j)
Next j
End If
Next i
.[A6:H50000].ClearContents
If k Then
.[B6].Resize(k, 1).NumberFormat = "dd/mm/yyyy"
.[A6].Resize(k, 8).Value = Darr
End If
End With
End Sub
Tại sheet 1 em có nhật ký bán hàng
giờ tại sheet 2 em muốn khi chọn mốc thời gian ở các ô B3 và D3 (ví dụ 01/01 -15/01)thì phía dưới sẽ cho ra kết quả doanh thu trong những ngày đó. Mong các bác giúp đỡ em ạ. Em cảm ơn![]()

Vẫn chưa chuẩn về thứ tự thì phải. Cái Darr(k, 1) = k ở code trên làm nên thứ tự thì phải ^^Thử thêm cách này . Bạn xem trong File nhé. Bạn gõ ngày tháng vào 2 ô B3 và D3 là kết quả hiện ra

Thử thêm cách này . Bạn xem trong File nhé. Bạn gõ ngày tháng vào 2 ô B3 và D3 là kết quả hiện ra
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3:D3")) Is Nothing Then
Call Gigi ' Ten Sub
End If
End Sub
Vẫn chưa chuẩn về thứ tự thì phải. Cái Darr(k, 1) = k ở code trên làm nên thứ tự thì phải ^^
Mỗi người thường có cách viết khác nhau, nhưng mĩnh nghĩ nên tách sự kiện này khỏi Sub cho dễ nhìn hơn. Thực tế những người viết Code chuyên nghiệp cũng thường tách ra thành 1 module nhỏ vì code thường rất dài, khi cần tìm chuột phải Denifition là xong. Tất nhiên đây là chủ quan của mình thôiPHP:Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A3:D3")) Is Nothing Then Call Gigi ' Ten Sub End If End Sub
Phong nên tập dần chuyển sang dạng mảng cho dạng bài như vậy. Tốc độ sẽ nhanh hơn rất nhiều. Cái hiện tại Phong làm là xé trên từng Cells nên sẽ tính toán lâu hơn...
Còn cái chuyện viết code luôn trong sự kiện hay tách ra module rồi từ sự kiện mới Call sub (như comet_1701 nói). Thì tùy nhu cầu mỗi người mà làm.
Đôi lúc tôi thích viết code trong sự kiện hơn. Vì copy và paste lên GPE có 1 phát, khỏi phải hướng dẫn cho người sử dụng lòng vòng. bảo paste vào sheet thì sheet, vào module thì vào module....

Hi. Tôi cũng đọc đại trên GPE hình như cũng là cái link đó đó, chứ có biết cái tài liệu nào đâu...Thôi thì làm riết thành quen ah!

