Giúp tôi sắp sếp thời gian theo thứ tự từng ngày (3 người xem)

Liên hệ QC

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

hoang0569

Thành viên thường trực
Tham gia
21/7/09
Bài viết
316
Được thích
8
Tôi có gửi File bên hàm và công thức, các anh chị cũng đã giúp tôi làm nhưng Khi làm nảy sinh vấn đề khác nên tôi gửi File sang bên chuyên mục VBA mong các anh các bạn giúp tôi hoàn thiện File hơn,xin cảm ơn nhiều.
 

File đính kèm

Tôi có gửi File bên hàm và công thức, các anh chị cũng đã giúp tôi làm nhưng Khi làm nảy sinh vấn đề khác nên tôi gửi File sang bên chuyên mục VBA mong các anh các bạn giúp tôi hoàn thiện File hơn,xin cảm ơn nhiều.

Tức là sắp xếp theo màu sắc và giờ?
 
Không anh ạ, chỉ sắp sếp theo giờ, bắt đầu là giờ sớm nhất của ngày sớm nhất, ở File trên là bắt đầu từ 22h ngày 1 trở đi anh a;
 
Chạy thử cái này xem sao
Kết quả dán vào sheet2
PHP:
Public Sub Thoi_Gian_SX()
Dim dl, tt, ngay(24, 1 To 100), kq(), r As Long, c As Long, i

tt = Sheet1.Range("C2:E2")
dl = Sheet1.Range("C4:E13")

ReDim kq(1 To 1000, 1 To 1)

For c = 1 To UBound(dl, 2)
i = tt(1, c)
If dl(1, c) = 0 Then i = i + 1     '<---Thay đổi cách tính chỉ số i cho dòng đầu tiên'
ngay(dl(1, c), i) = dl(1, c)

For r = 2 To UBound(dl)
If dl(r, c) < dl(r - 1, c) Then i = i + 1
ngay(dl(r, c), i) = dl(r, c)
Next r
Next c

i = 0
For c = 1 To UBound(ngay, 2)
For r = 0 To UBound(ngay)
If ngay(r, c) <> "" Then
i = i + 1
kq(i, 1) = ngay(r, c)
End If
Next r
Next c

Sheet2.UsedRange.Clear
Sheet2.Range("A1").Resize(i, 1) = kq
End Sub
 
Lần chỉnh sửa cuối:
Anh ơi em quên mất, em đang dùng Excel 2003 và có thể chạy nhiều bảng như vậy 1 lúc không anh?
 
Có thể chạy nhiều bảng 1 lúc và kết quả ra song song với mỗi bảng theo chiều dọc được không anh, giúp em nhé.
 
Bạn gửi file ví dụ có 1-2 bảng kèm theo kết quả giả định lên xem sao
 
Em gửi File anh xem giúp.
 

File đính kèm

Em gửi File anh xem giúp.
Bố trí lại dữ liệu cho dễ làm
kết quả dán vào sheet2 theo từng cột

PHP:
Public kq(), i

Public Sub TG_SX(dl(), tt())
Dim ngay(24, 1 To 100), r As Long, c As Long

ReDim kq(1 To UBound(dl) * UBound(dl, 2), 1 To 1)

For c = 1 To UBound(dl, 2)
i = tt(1, c)
If dl(1, c) = 0 Then i = i + 1     '<---Thay đổi cách tính chỉ số i cho dòng đầu tiên'
ngay(dl(1, c), i) = dl(1, c)

For r = 2 To UBound(dl)
If dl(r, c) < dl(r - 1, c) Then i = i + 1
ngay(dl(r, c), i) = dl(r, c)
Next r
Next c

i = 0
For c = 1 To UBound(ngay, 2)
For r = 0 To UBound(ngay)
If ngay(r, c) <> "" Then
i = i + 1
kq(i, 1) = ngay(r, c)
End If
Next r
Next c

End Sub


Public Sub Tong()
Dim dl(), tt(), r As Long, rw As Long, j

Sheet2.UsedRange.Clear

With Sheet1
rw = .UsedRange.Rows.Count

For r = 1 To rw Step 13
j = j + 1
Sheet2.Cells(1, j) = j

tt = .Range("D" & r).CurrentRegion
dl = .Range("D" & r + 2).CurrentRegion
Call TG_SX(dl, tt)
Sheet2.Range("A3").Offset(, j - 1).Resize(i, 1) = kq
Next r
End With

Sheet2.UsedRange.Columns.AutoFit
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Anh à, trường hợp thứ 3 phài là 23, 0 ,1 mới đúng vì 0h đã bước sang ngày hôm sau rồi, anh sửa lại giúp em với. cảm ơn anh
 
Anh à, trường hợp thứ 3 phài là 23, 0 ,1 mới đúng vì 0h đã bước sang ngày hôm sau rồi, anh sửa lại giúp em với. cảm ơn anh
Thêm dấu nháy đơn ' trước câu lệnh này
PHP:
If dl(1, c) = 0 Then i = i + 1     '<---Thay đổi cách tính chỉ số i cho dòng đầu tiên'
 
Cảm ơn anh rất nhiều, chúc anh luôn vui, khỏe.
 
Web KT

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

Back
Top Bottom