Chọn vùng dữ liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

phulien1902

GPE - My love
Tham gia
6/7/13
Bài viết
3,543
Được thích
4,424
Xin chào mọi người.
Tôi có 1 File dữ liệu gồm 4 cột, với cấu trúc Tháng/Ngày/Năm/Giờ
Bây giờ tôi muốn chọn 1 vùng dữ liệu bất kỳ, chẳng hạn vùng dữ liệu bắt đầu từ 0 giờ ngày 1 tháng 4 năm 16 tới 0 giờ ngày 1 tháng 5 năm 16 thì phải làm thế nào?
Trong File thì vùng dl tôi cần lấy là vùng có màu xanh nhạt.
Xin cảm ơn.
 

File đính kèm

Xin chào mọi người.
Tôi có 1 File dữ liệu gồm 4 cột, với cấu trúc Tháng/Ngày/Năm/Giờ
Bây giờ tôi muốn chọn 1 vùng dữ liệu bất kỳ, chẳng hạn vùng dữ liệu bắt đầu từ 0 giờ ngày 1 tháng 4 năm 16 tới 0 giờ ngày 1 tháng 5 năm 16 thì phải làm thế nào?
Trong File thì vùng dl tôi cần lấy là vùng có màu xanh nhạt.
Xin cảm ơn.
Dữ liệu liên tực chứ bạn? mà mình nghĩ cái này bạn code đơn giản chứ nhỉ?

[
Mã:
Sub copyrange()
Dim i, j As Long, lr As Long, arr
lr = Range("B65000").End(3).Row
arr = Range("B2:E" & lr).Value
For i = 1 To lr
    If arr(i, 1) = 4 And arr(i, 2) = 1 And arr(i, 3) = 16 And arr(i, 4) = 0 Then
        For j = i + 1 To lr + 1
            If arr(j, 1) = 5 And arr(j, 2) = 1 And arr(j, 3) = 16 And arr(j, 4) = 0 Then
                Range("B" & i + 1 & ":E" & j + 1).Copy Range("H1")
                Exit Sub
            End If
        Next
    End If
Next
End Sub
[
 
Lần chỉnh sửa cuối:
Upvote 0
có ngày đẹp trời trong dữ liệu không có ngày 1/4 mà chỉ có ngày 2/4 thì sao ta ? híc -+*/-+*/
 
Upvote 0
Bây giờ tôi có 1 vấn đề này chưa giả quyết được, đó là chuỗi dữ liệu bị thiếu giờ trong cột giờ.
Tôi muốn bổ sung nó bằng cách Inser Rows và thêm các giờ còn thiếu. Bạn nào biết xin chỉ giúp.
Trong File tôi gửi đã nêu rõ vấn đề vướng mắc.
Cảm ơn.
 

File đính kèm

Upvote 0
Bạn viết một hàm đổi ngày giờ thành 1 số, ví dụ số giây kể từ 01/01/1900
Hoặc 1 hàm dổi ngày giờ thành chuỗi dạng "yyyyMMdd hhmmss" (chuỗi phải dạng này mới so sánh được)
Sau đó, code của bạn chỉ việc họi hàm này để so sánh
Điển hình:
Mã:
function SoRaChuoi(so as integer, dc as integer) as string
' hàm đổi số so thành chuỗi với độ dài nhất định dc, chèn 0 vào đầu cho đủ dài
SoRaChuoi = Right(String(dc, "0") & so, dc)
end function
function ChuoiNgay(rg as range) as string
' hàm đổi ngày tháng thành dạng yyyyMMnn hhmm
if rg.cells.count < 4 then exit function
ChuoiNgay = SoRaChuoi(rg.cells(3),4) & SoRaChuoi(rg.cells(1),2) & SoRaChuoi(rg.cells(2),2) & " " & SoRaChuoi(rg.cells(4),2) ' thêm phút giây tuỳ ý
end function
 
Upvote 0
Bây giờ tôi có 1 vấn đề này chưa giả quyết được, đó là chuỗi dữ liệu bị thiếu giờ trong cột giờ.
Tôi muốn bổ sung nó bằng cách Inser Rows và thêm các giờ còn thiếu. Bạn nào biết xin chỉ giúp.
Trong File tôi gửi đã nêu rõ vấn đề vướng mắc.
Cảm ơn.
Vởi ngày 30/03/2016 cũng bị thiếu, lý do vì sao lại không điền thêm vô vậy nè?
 
Upvote 0
Vởi ngày 30/03/2016 cũng bị thiếu, lý do vì sao lại không điền thêm vô vậy nè?
À, đây là số liệu tôi lấy từ File *.txt. Dữ liệu nó có thế nào thì mình sử dụng như thế.
Như trong File của tôi thì dữ liệu đem sử dụng sẽ là tháng 4 & 5. Do vậy viẹc bổ sung giờ sẽ được tính từ E2 đến dòng cuối của bảng dữ liệu.
 
Upvote 0
Bây giờ tôi có 1 vấn đề này chưa giả quyết được, đó là chuỗi dữ liệu bị thiếu giờ trong cột giờ.
Tôi muốn bổ sung nó bằng cách Inser Rows và thêm các giờ còn thiếu. Bạn nào biết xin chỉ giúp.
Trong File tôi gửi đã nêu rõ vấn đề vướng mắc.
Cảm ơn.

Bạn chạy thử Sub này cho File của bạn xem sao.
PHP:
Public Sub GPE()
Dim ftime As Double, eTime As Double
Dim dArr(1 To 65000, 1 To 4), K As Long, N As Double, Rws As Long
Rws = Range("B2").End(xlDown).Row
ftime = DateSerial([D2] + 2000, [B2], [C2]) + TimeSerial([E2], 0, 0)
eTime = DateSerial(Range("D" & Rws) + 2000, Range("B" & Rws), Range("C" & Rws)) + TimeSerial(Range("E" & Rws), 0, 0)
N = TimeSerial(1, 0, 0)
Do While ftime < eTime
    K = K + 1
    dArr(K, 1) = Month(ftime)
    dArr(K, 2) = Day(ftime)
    dArr(K, 3) = Year(ftime) - 2000
    dArr(K, 4) = Hour(ftime)
    ftime = ftime + N
Loop
Range("I2").Resize(K, 4) = dArr
End Sub
 
Upvote 0
Bạn chạy thử Sub này cho File của bạn xem sao.
PHP:
Public Sub GPE()
Dim ftime As Double, eTime As Double
Dim dArr(1 To 65000, 1 To 4), K As Long, N As Double, Rws As Long
Rws = Range("B2").End(xlDown).Row
ftime = DateSerial([D2] + 2000, [B2], [C2]) + TimeSerial([E2], 0, 0)
eTime = DateSerial(Range("D" & Rws) + 2000, Range("B" & Rws), Range("C" & Rws)) + TimeSerial(Range("E" & Rws), 0, 0)
N = TimeSerial(1, 0, 0)
Do While ftime < eTime
    K = K + 1
    dArr(K, 1) = Month(ftime)
    dArr(K, 2) = Day(ftime)
    dArr(K, 3) = Year(ftime) - 2000
    dArr(K, 4) = Hour(ftime)
    ftime = ftime + N
Loop
Range("I2").Resize(K, 4) = dArr
End Sub
Code hay quá.
Cảm ơn bác Ba tê rất nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom