Xin giúp sắp xếp thời gian theo thứ tự (1 người xem)

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
Em gửi File kèm theo.
 

File đính kèm

thấy hỏng hiểu gì luôn, hỏng thấy lấy theo quy luật nào hết, lúc đầu tưởng lấy hết theo thứ tự từ trái qua từ trên xuống, nên dùng OFFSET, ai ngờ khi ra kết quả so khớp thì mới thấy nó không khớp, yêu cầu không theo một quy luật nào cả
 
Lần chỉnh sửa cuối:
Yêu cầu là lọc các giờ từ trong 3 cột về 1 cột theo thứ tự thời gian ( File em gửi là bắt đầu từ 20 giờ trở đi) mà anh.
 
thấy hỏng hiểu gì luôn, hỏng thấy lấy theo quy luật nào hết, lúc đầu tưởng lấy hết theo thứ tự từ trái qua từ trên xuống, nên dùng OFFSET, ai ngờ khi ra kết quả so khớp thì mới thấy nó không khớp, yêu cầu không theo một quy luật nào cả

Liệu quy luật có phải là : lấy các giá trị trong vùng B4:D13 lấy từ trên xuống dưới , từ trái qua phải, giá trị nào đã lấy rồi thì bỏ qua ( tức là các giá trị trùng nhau chỉ tính một lần)

Nhưng tại sao từ H4:H7 đã lấy 20,21,22,23 rồi sao ở dưới từ H20 : H23 lại lặp lại 20,21,22,23 vậy ta ???
 
Lần chỉnh sửa cuối:

Chạy đọan code này xem thế nào
Mã:
Public Sub Noi_Dong()
Dim DL, Tam(), kq(), r As Long, c As Long

DL = Sheet1.Range("A4:D13")
ReDim Tam(1 To UBound(DL) * UBound(DL, 2)), kq(1 To UBound(DL) * UBound(DL, 2))

For r = 1 To UBound(DL)
For c = 1 To UBound(DL, 2)
Tam(r) = Tam(r) & " " & DL(r, c)

If r = 1 Then
kq(r) = kq(r) & " " & DL(r, c)
Else
If InStr(Tam(r - 1) & " ", " " & DL(r, c) & " ") = 0 Then
kq(r) = kq(r) & " " & DL(r, c)
End If
End If
Next c

kq(r) = Trim(kq(r))
Next r

Sheet1.Range("H4").Resize(UBound(DL) * UBound(DL, 2), 1).ClearContents
Sheet1.Range("H4").Resize(UBound(DL) * UBound(DL, 2), 1) = Application.Transpose(Split(Join(kq, " "), " "))
End Sub

---
Làm xong mới nhận ra là trang "Hàm và công thức"
 
Lần chỉnh sửa cuối:
Cảm ơn anh nhiều, nhưng ý em là muốn sắp sếp thời gian theo thứ tự tăng dần theo hàng ngang ( số trùng chỉ lấy 1) rồi lấy tiếp theo hàng dọc, em gửi kèm File, Anh chị xem rồi giúp em, cảm ơn nhiều.
 

File đính kèm

Cảm ơn anh nhiều, nhưng ý em là muốn sắp sếp thời gian theo thứ tự tăng dần theo hàng ngang ( số trùng chỉ lấy 1) rồi lấy tiếp theo hàng dọc, em gửi kèm File, Anh chị xem rồi giúp em, cảm ơn nhiều.

Đoạn code viết ở bài 5 cũng là theo file đính kèm ban đầu. Có lẽ bạn đưa lên nhiều mẫu trong 1 file làm 1 lần nhanh hơn
 
Nhưng khi em thay số liệu mới ( File em gửi sau) thì không được như ý, anh xem lại giúp em nhé.
 
Nhưng khi em thay số liệu mới ( File em gửi sau) thì không được như ý, anh xem lại giúp em nhé.

Theo mẫu bài 6 và 1, ý của bạn có phải là Xét tuần tự 2 dòng liên tiếp, số nào xuất hiện từ lần 2 trở đi sẽ bị loại. Sau đó nối các phần tử >=0 theo từng hàng?

Gửi bạn đọan code theo giả định trên, kết quả có khác một vài chỗ so với mẫu bài 6
Nếu không phải thì bạn chờ cao thủ trên diễn đàn hỗ trợ vậy.
Mã:
Public Sub Noi_Dong()
Dim DL, kq(), r As Long, rw As Long, c As Long, i

DL = Sheet1.Range("A4:D13")
ReDim kq(1 To UBound(DL) * UBound(DL, 2), 1 To 1)

With CreateObject("scripting.dictionary")
For r = 1 To UBound(DL) - 1
For rw = r To r + 1
For c = 1 To UBound(DL, 2)
If DL(rw, c) <> "" Then
If Not .exists(DL(rw, c)) Then
.Add DL(rw, c), ""
Else
DL(rw, c) = ""
End If
End If
Next c
Next rw
.RemoveAll
Next r
End With

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

Sheet1.Range("H4").Resize(UBound(kq), 1).ClearContents
Sheet1.Range("H4").Resize(i, 1) = kq
End Sub

cái này làm bằng VBA cũng còn mệt chứ đừng nói là xài công thức
Cái này có lẽ là do chủ thớt kèm file mẫu không tổng quát thôi.
 

File đính kèm

  • A.xls
    A.xls
    34.5 KB · Đọc: 12
Em xin nói rõ lại yêu cầu: 3 cột trong File em gửi là 3 cột thời gian sắp xếp theo thứ tự tăng dần, từ ngày hôm trước sang hôm sau. Yêu cầu là lọc ra 1 cột, lấy thời gian theo thứ tự tăng dần trong từng ngày, lấy từ mốc thời gian là giá trị đâu cột A (thời gian tiếp sau có thể cùng cột rồi mới sang cột bên hoặc ngược lại), giờ trùng nhau trong hàng chỉ chọn 1, cuối các hàng trong bảng đã sang ngày hôm sau nên vẫn chọn bình thường, mong anh chị giúp em, xin cảm ơn.
 
Cái này có lẽ là do chủ thớt kèm file mẫu không tổng quát thôi.

tôi đọc sơ qua topic tưởng bảng này không có quy luật . nay đọc kĩ lại bài #3 thì ra có chìa khóa để giải
bấm vào nút hello trong file này . tôi làm theo đúng ý bạn .
ở dòng đầu tiên của cả 3 cột . nếu > 20 và < 24 => hiểu là ngày 1
ngoài đoạn đó => hiểu là ngày 2 .
 

File đính kèm

Em xin nói rõ lại yêu cầu: 3 cột trong File em gửi là 3 cột thời gian sắp xếp theo thứ tự tăng dần, từ ngày hôm trước sang hôm sau. Yêu cầu là lọc ra 1 cột, lấy thời gian theo thứ tự tăng dần trong từng ngày, lấy từ mốc thời gian là giá trị đâu cột A (thời gian tiếp sau có thể cùng cột rồi mới sang cột bên hoặc ngược lại), giờ trùng nhau trong hàng chỉ chọn 1, cuối các hàng trong bảng đã sang ngày hôm sau nên vẫn chọn bình thường, mong anh chị giúp em, xin cảm ơn.
 
Cảm ơn anh nhiều, gần đúng ý em rồi, anh sửa giúp em, nếu tính từ 0 hoặc 1 giờ đi, File của anh chỉ đúng khi mốc đầu tiên >20h thôi.
 
Anh xem giúp em trường hợp sau
 

File đính kèm

Em xin lỗi, anh doveandrose xem giúp lại cho em với nhé. Cảm ơn anh nhiều.
 
Cảm ơn anh doveandrose nhiều, đúng yêu cầu của em rồi. Mong anh giúp thêm em cách sắp sếp lại code để cột kết quả nằm ở cột, ô B4 còn bảng giữ liệu đặt ở cột, ô J4, em sắp xếp lại nhưng không được. Cảm ơn anh nhiều.
 
Cảm ơn anh doveandrose nhiều, đúng yêu cầu của em rồi. Mong anh giúp thêm em cách sắp sếp lại code để cột kết quả nằm ở cột, ô B4 còn bảng giữ liệu đặt ở cột, ô J4, em sắp xếp lại nhưng không được. Cảm ơn anh nhiều.
bạn muốn gì thì đem file lên đây kèm các vị trí mong muốn trong file đó .
 
Anh giải thích giúp em code "Range("O4").Resize(k).ClearContents", em có cột dữ liệu cạnh bên của cột kết quả bị xoá mất tiêu à. Giúp em với.
 
Anh giải thích giúp em code "Range("O4").Resize(k).ClearContents", em có cột dữ liệu cạnh bên của cột kết quả bị xoá mất tiêu à. Giúp em với.
bạn click phải chuột vào 1 ô bất kì thấy hiện ra cái menu có dòng là Clear Contents mà . chắc bạn cũng biết để làm gì chứ
 
Em có cột dx liệu bên cạnh luôn bị mất mỗi khi chạy Macro, anh sửa giúp em code nhé. Cảm ơn anh.
 
bài #20 đã nhắc bạn rồi . nếu bạn cứ lì nữa tôi sẽ không trả lời topic này nữa
 
Anh doveandrose em gửi File, anh xem giúp em nhé, cảm ơn anh nhiều.
 

File đính kèm

Anh doveandrose ơi Macro không chạy, xuất hiện bảng "get Range" là sao anh? Xem lại giúp em với, cảm ơn anh.
 
Anh doveandrose ơi Macro không chạy, xuất hiện bảng "get Range" là sao anh? Xem lại giúp em với, cảm ơn anh.
không dám nghịch bao giờ mới khá được ? thấy bảng hiện ra mà bảo là không chạy ?
bảng đó là hộp thoại quét vùng chứa bảng giờ ban đầu . ví dụ quét vùng H4:J13 rồi nhấn OK xem sao ?
 
Anh doveandroseơi giúp thêm em tìm ngày tương ứng với giờ đã cho sẵn nhé, cảm ơn anh nhiều.
 

File đính kèm

tôi không hiểu file này chứa nội dung gì . chắc bạn nên đợi người khác vào giúp thôi .
 
Anh doveandrose em gửi nhầm File, Anh xem giúp em với nhé, cảm ơn anh nhiều
 

File đính kèm

tính ngày bằng công thức
so sánh giờ ô hiện tại với ô ngay trên nó
nhỏ hơn => đã sang ngày hôm sau
lớn hơn hoặc bằng => cùng ngày

công thức như vậy cũng phải lên hỏi là sao ?
 
Đơn giản vậy mà em không nghĩ ra, cảm ơn anh.
 
anh doveandrose ơi, có thể lồng File tìm ngày vào VBA sắp sếp giờ anh lảm cho em trước được không? Anh giúp em nhé, cảm ơn anh nhiều.
 
tôi không tham gia trả lời topic này nữa . giờ này là đã đến #34 rồi mà file bạn đưa lên vẫn chưa phải file thật , tôi tiếp tục làm thì chắc còn phải làm dài dài vì có phải file thật đâu . tôi không đủ kiên nhẫn làm việc với những người không nghiêm túc . chào bạn
 
File lần trước anhdoveandrose và các bạn giúp lại phát sinh 1 vấn đề khác mong anh và các bạn xem lại giúp, em gửi File kèm theo. cảm ơn nhiều.
 

File đính kèm

tôi không tham gia trả lời topic này nữa . giờ này là đã đến #34 rồi mà file bạn đưa lên vẫn chưa phải file thật , tôi tiếp tục làm thì chắc còn phải làm dài dài vì có phải file thật đâu . tôi không đủ kiên nhẫn làm việc với những người không nghiêm túc . chào bạn

hey............sao nổi nóng vậy ..........kakakkaka


File lần trước anhdoveandrose và các bạn giúp lại phát sinh 1 vấn đề khác mong anh và các bạn xem lại giúp, em gửi File kèm theo. cảm ơn nhiều. http://www.giaiphapexcel.com/forum/member.php?189279-doveandrose

tôi đọc lại mấy bai trên, bạn nói là lấy ô đầu tiên trong bảng để làm mốc, vậy cái bảng thứ 2 của bạn bắt đâu bằng số 17 chứ sao 11?rồi cái dãy sắp xếp đó số 17 chạy đâu mất rồi?
========
mấy bài dạng này phải đợi bác Bate thui............hihihihi
 
Mới đầu File của em lấy mốc ở ô đầu tiên cột đầu tiên rồi sắp sếp thời gian tăng dần nhưng sau em làm thực tế nó nảy sinh không phải lấy mốc từ ô đàu của cột đầu tiên mà là lấy mốc đầu tiên từ 1 trong 3 cột đó, giờ nào là giờ bắt đầu của ngày sớm nhất làm mốc, em gửi thêm File, anh chị bớt chút thời gian giúp em với nhé.
 

File đính kèm

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

Back
Top Bottom