giúp mình lọc dữ liệu theo ngày tháng với !

Liên hệ QC

doanhoanghai

Thành viên hoạt động
Tham gia
20/12/07
Bài viết
195
Được thích
4
mình có vẫn đề về lọc tách dữ liệu theo ngày tháng ! chỉ dùm mình với nhé !/-*+/
 
Bài này "tê" à nha! Dử liệu gỏ không thống nhất: Khi thì 2208, khi thì 050708 khi thì 17042008
Chả biết đường đâu mà lần!
(Làm được nhưng bực mình với dạng dử liệu này quá đi mất)
 
Upvote 0
bạn cũng giống mình nhìn thấy mấy kiểu này mình ớn kinh ! nhưng mình thấy các cuối đều là số và định lọc theo dạng ký tự số... chữ ... cuối là số thì lấy tất cả các ký tự số ở cuối ra ! không biết có đc không nữa ngán kiểu này quá à ! ai bít giúp mình với nhé ! --=0
 
Upvote 0
doanhoanghai;88809[COLOR="Silver" đã viết:
]bạn cũng giống mình nhìn thấy mấy kiểu này mình ớn kinh ! nhưng mình thấy các cuối đều là số và định [/COLOR]lọc theo dạng ký tự số... chữ ... cuối là số thì lấy tất cả các ký tự số ở cuối ra ! không biết có đc không nữa ngán kiểu này quá à ! ai bít giúp mình với nhé ! --=0

Vậy theo bạn
5.5 - 4LC1-SS08-6508 : tất cả các ký tự số ở cuối là phần nào?
Tương tự với:
5.5 - 3LC1-SS08-17042008
5 - 3LC1-SS08-17042008
6.5 - SGHN050708

?? Thiệt không hiểu!!??
 
Upvote 0
bạn cũng giống mình nhìn thấy mấy kiểu này mình ớn kinh ! nhưng mình thấy các cuối đều là số và định lọc theo dạng ký tự số... chữ ... cuối là số thì lấy tất cả các ký tự số ở cuối ra ! không biết có đc không nữa ngán kiểu này quá à ! ai bít giúp mình với nhé !
Hic... Hic... Dử liệu kiểu này đúng là rối thật! Nhưng cũng cố gắng làm cho bạn!
Dùng tạm code này:
PHP:
Option Explicit
Sub DateConvert()
  Dim i As Long, J As Long
  Dim K As Byte
  Dim Temp As String, Chw As String
  Dim Nam As Integer, Thang As Integer, Ngay As Integer
  For i = 2 To [B60000].End(xlUp).Row
    For J = Len(Cells(i, 2)) To 1 Step -1
      Chw = Mid(Cells(i, 2), J, 1)
      If Asc(Chw) < 48 Or Asc(Chw) > 57 Then K = Len(Cells(i, 2)) - J: Exit For
    Next J
    Temp = Right(Cells(i, 2), K)
    Select Case Len(Temp)
      Case 8: Nam = Right(Temp, 4) * 1
              Thang = Mid(Temp, 3, 2) * 1
              Ngay = Left(Temp, 2) * 1
              Cells(i, 3) = DateSerial(Nam, Thang, Ngay)
      Case 6: Nam = Right(Temp, 2) + 2000
              Thang = Mid(Temp, 3, 2) * 1
              Ngay = Left(Temp, 2) * 1
              Cells(i, 3) = DateSerial(Nam, Thang, Ngay)
      Case 4: Nam = Right(Temp, 2) + 2000
              Thang = Mid(Temp, 2, 1) * 1
              Ngay = Left(Temp, 1) * 1
              Cells(i, 3) = DateSerial(Nam, Thang, Ngay)
    End Select
  Next i
End Sub
(Bạn hãy tự kiểm tra lại độ chính xác nha! Mết quá)
 

File đính kèm

Upvote 0
-Muốn lọc dữ liệu theo ngày tháng, trước hết phải chuyển đổi chuỗi lẫn lộn ấy ra ngày tháng,từ đó làm điều kiện để lọc.
-Mình đọc yêu cầu của bạn cũng không hiểu lắm. Chỉ đoán và chuyển đổi thế này không biết có đúng không.
Mã:
Sub To_Date()
On Error Resume Next
Dim Irow As Long, i As Long
Dim Ng As String, Th As String, Na As String
Irow = Range("A65000").End(xlUp).Row
       For i = 2 To Irow
       Schuoi = Val(StrReverse(Cells(i, 2)))
       Schuoi = StrReverse(Schuoi)
               Select Case Len(Schuoi)
               Case 4
                   Ng = Left(Schuoi, 1)
                   Th = Mid(Schuoi, 2, 1)
                   Na = Right(Schuoi, 2)
                   Cells(i, 3) = DateSerial(Na, Th, Ng)
                Case 6
                   Ng = Left(Schuoi, 2)
                   Th = Mid(Schuoi, 3, 2)
                   Na = Right(Schuoi, 2)
                   Cells(i, 3) = DateSerial(Na, Th, Ng)
                Case 8
                    Ng = Left(Schuoi, 2)
                    Th = Mid(Schuoi, 3, 2)
                    Na = Right(Schuoi, 4)
                    Cells(i, 3) = DateSerial(Na, Th, Ng)
                 End Select
        Next
End Sub
 

File đính kèm

Upvote 0
Ngộ quá ha!
Trong công thức Excel, nếu dùng hàm Date(08,05,03) thì nó hiểu là ngày 3 tháng 5 năm 1908!
Trong khi với hàm DateSerial thì nó vẩn hiểu 08 là năm 2008
Làm mình mất công + thêm số 2000 vào!
 
Upvote 0
Các bạn ơi còn phần xem báo cáo theo ngày tháng phải làm sao giờ !

đúng là siêu thật bài này DL lung tung tưởng trừng không thể làm được ai ngờ ! cảm ơn các bạn nhiều lắm ! nhân đây mình muốn hỏi phần lọc theo ngày tháng sao giờ nghĩa là chọn báo cáo theo thời gian xác định từ ngày này , đến ngày lọc ra DL trong khoảng thời gian đó ! liệu có được không vậy ! /-*+/
 
Lần chỉnh sửa cuối:
Upvote 0
đúng là siêu thật bài này DL lung tung tưởng trừng không thể làm được ai ngờ ! cảm ơn các bạn nhiều lắm ! nhân đây mình muốn hỏi phần lọc theo ngày tháng sao giờ nghĩa là chọn báo cáo theo thời gian xác định từ ngày này , đến ngày lọc ra DL trong khoảng thời gian đó ! liệu có được không vậy ! /-*+/
Ý bạn là sao?
Có phải sau khi lấy ra được ngày tháng năm, bạn muốn tiếp tục lọc ra 1 danh sách theo thời gian với 2 thời điểm cho trước (từ ngày... đến ngày...)
Nếu đúng thế thì đơn giãn nhất bạn có thể dùng Advanced Filter để làm điều này (đơn giãn lắm mà)
 
Upvote 0
hình như bác Hải định làm báo cáo từ file sổ lệnh của chứng khoán à
 
Upvote 0
mình định làm như vây nè !

nhưng mình muốn làm ra theo form có được không bạn ! không dùng Filter , như vậy nè !
 
Upvote 0
không !

thực ra mình đang định làm báo cáo cho cửa hàng thôi xem là trong thời gian này còn lại bao nhiêu hàng thôi ! để làm báo cáo gửi xếp ! hihi... chỉ có vậy thôi à !//**/
 
Upvote 0
Các bạn giúp mình lọc từ ngày tới ngày tí, mình làm hoài không được .Xin cảm ơn
 

File đính kèm

Upvote 0
Các bạn giúp mình lọc từ ngày tới ngày tí, mình làm hoài không được .Xin cảm ơn
1/ Bạn chưa lọc đã xoá hết dữ liệu trong sheet Nhap thì lấy đâu ra dữ liệu để lọc nữa?
2/ Cái Sub Loc của bạn đây

PHP:
Sub Loc()
    Dim n, i, j, k As Integer
    Dim rngNgay As Range
 
    ' Xoa du lieu cu
    Sheet4.Range("A6:S1000").ClearContents
 
    'Loc va copy du lieu
    n = Sheet1.Range("A65000").End(xlUp).Row
    Set rngNgay = Sheet1.Range("A6:A" & n)
    k = 6
    For i = 6 To n
        If rngNgay.Cells(i - 5, 1) > Sheet4.Cells(3, 2) Then Exit For
        If rngNgay.Cells(i - 5, 1) >= Sheet4.Cells(2, 2) Then
            For j = 1 To 19
                Sheet4.Cells(k, j) = Sheet1.Cells(i, j)
            Next
        End If
        k = k + 1
    Next
End Sub

Lưu ý trước khi lọc cần Short lại dữ liệu trong Sh Nhap theo ngay của cột A
Thân
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom