Thống kê ngày không có số liệu

Liên hệ QC

spacemanforever

Thành viên hoạt động
Tham gia
8/10/08
Bài viết
113
Được thích
71
Chào anh em GPE!
Hôm nay, mình có khó khăn nhờ mọi người giúp đỡ.
===Mô tả: Em có bản số liệu trong sheet data gồm
+ 5 cột: Date, A, B, C, D.
+ 1 buton check.
Em tiến hành tạo userform gồm 2 dtpicker:
+Dtpicker1: ngày bắt đầu kiểm tra.
+Dtpicker2: ngày kết thúc kiểm tra.
===Thao tác:
1.Khi ta vào sheet data, ta click button check sẽ hiện ra userform1.
2. Ta nhập số liệu vào userform1 (nhập ngày vào 2 dtpicker) sau đó click OK.
3. Hiện bảng báo các ngày không có số liệu từ sheet data.
===Khó khăn: Em vẫn chưa code được code check số liệu rồi hiện thông báo. mong mọi người giúp đỡ.
Ví dụ: ta chọn từ ngày 9/10/2010 - 17/10/2010 thì sẽ thông báo số ngày không có số liệu là: 9/10/2010, 12/10/2010, 15/10/2010, 17/10/2010
 

File đính kèm

Lần chỉnh sửa cuối:
Chào anh em GPE!
Hôm nay, mình có khó khăn nhờ mọi người giúp đỡ.
===Mô tả: Em có bản số liệu trong sheet data gồm
+ 5 cột: Date, A, B, C, D.
+ 1 buton check.
Em tiến hành tạo userform gồm 2 dtpicker:
+Dtpicker1: ngày bắt đầu kiểm tra.
+Dtpicker2: ngày kết thúc kiểm tra.
===Thao tác:
1.Khi ta vào sheet data, ta click button check sẽ hiện ra userform1.
2. Ta nhập số liệu vào userform1 (nhập ngày vào 2 dtpicker) sau đó click OK.
3. Hiện bảng báo các ngày không có số liệu từ sheet data.
===Khó khăn: Em vẫn chưa code được code check số liệu rồi hiện thông báo. mong mọi người giúp đỡ.
Ví dụ: ta chọn từ ngày 9/11/2010 - 17/11/2010 thì sẽ thông báo số ngày không có số liệu là: 9/10/2010, 12/10/2010, 15/10/2010, 17/10/2010
Tư duy lô gích mà.
Ngày đầu: FDate
Ngày cuối: EDate
Làm 1 vòng lặp
For i =1 to rng.rows.count
if ngay>=FDate and ngay<=EDate then
if rng.... = "" then
gán vào cái gì ...
end if
end if
next i
Đại khái là vậy, chưa xem file.
 
Lần chỉnh sửa cuối:
Upvote 0
Tư duy lô gích mà.
Ngày đầu: FDate
Ngày cuối: EDate
Làm 1 vòng lặp

Đại khái là vậy, chưa xem file.
Em cũng đang làm theo hướng này. Tuy nhiên nó chỉ báo ra từng massagebox của ngày không có. (Mỗi ngày không có là 1 massagebox).
Nhưng em lại muốn là xuất ra 1 bảng tổng hợp số ngày không có số liệu. Chứ xuất hiện massagebox kiểu trên close mõi tay.... hic ... hic.
Mong anh xem lại dùm.
 
Upvote 0
Em cũng đang làm theo hướng này. Tuy nhiên nó chỉ báo ra từng massagebox của ngày không có. (Mỗi ngày không có là 1 massagebox).
Nhưng em lại muốn là xuất ra 1 bảng tổng hợp số ngày không có số liệu. Chứ xuất hiện massagebox kiểu trên close mõi tay.... hic ... hic.
Mong anh xem lại dùm.
Em chép code này vào thử, kq sẽ ở sheet3. Nếu dùng Dic sẽ hay hơn.
PHP:
Dim fDate As Long, eDate As Long, iDate As Long
Dim myRng As Range, endR As Long, fR As Long, s As Long
Dim wf As WorksheetFunction, Arr()
Private Sub CommandButton1_Click()
fDate = DTPicker1: eDate = DTPicker2
CheckDate
Unload Me
End Sub
Sub CheckDate()
fR = 5
Set wf = WorksheetFunction
With Sheets("Data")
  endR = .Cells(65000, 1).End(xlUp).Row
  Set myRng = .Range("A" & fR & ":A" & endR)
End With
s = 0
ReDim Arr(1 To eDate - fDate + 1, 1 To 1)
For iDate = fDate To eDate
  If wf.CountIf(myRng, iDate) = 0 Then
    s = s + 1
    Arr(s, 1) = CDate(iDate)
  End If
Next iDate
If s > 0 Then
  Sheet3.Range("A1").Resize(s, 1) = Arr
End If
Erase Arr
Set wf = Nothing: Set myRng = Nothing
End Sub
 
Upvote 0

File đính kèm

Upvote 0
Vậy mình muốn kết hợp Scripting.Dictionary vào vba excel phải làm sao vậy anh?
Và với vấn đề của em, em muốn xuất ra massagebox có được không?
Cảm ơn anh nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Thêm 1 tham khảo cho nút lệnh "OK" (Macro trong Excel 2003)

PHP:
Private Sub CommandButton1_Click()
 Dim MyDate As String
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim jJ As Integer, SNgay As Integer
       
 Set Sh = Sheets("DATA")
 Set Rng = Sh.Range(Sh.[a4], Sh.[A65500].End(xlUp))
 SNgay = CVDate(TextBox2.Value) - CVDate(TextBox1.Value)
 For jJ = 0 To SNgay
   Set sRng = Rng.Find(jJ + CVDate(TextBox1.Value), , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      MyDate = MyDate & ", " & CVDate(TextBox1.Value) + jJ
   Else
'      MsgBox jJ + CVDate(TextBox1), , "Yes"'
   End If
 Next jJ
 MsgBox MyDate
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom