Dò tìm dữ liệu không liên tục, nhưng có cấu trúc (1 người xem)

Liên hệ QC

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

nguyenphuoctrong1986

Thành viên mới
Tham gia
18/6/12
Bài viết
10
Được thích
0
Phần mềm xuất ra Time Card từ cột A - L tùy vào số lượng nhân viên, thường là trên 2000 nhân viên.
Em cần dò tìm giờ vào và ra cho từng nhân viên (giờ vào là IN của MORNING, ra là ô có dữ liệu cuối cùng trong dãy từ B đến G, VD: ngày 1 cho nhân viên 500001 là E6, ngày 3 là D3)
Với ngày tùy ý vào ô P1, một cách tổng quát và tối ưu (để dùng lại cho tháng sau, dữ liệu nhiều nên cần nhanh)
Em đã làm được như trong file đính kèm, nhưng vẫn chưa tổng quát, vì phần out không làm được một cách tổng quát.
Xin các anh chị giúp em công thức cho phần out, và xem lại các phần trước như vậy đã tối ưu chưa? Còn cách nào nhanh hơn nữa không?
 

File đính kèm

Phần mềm xuất ra Time Card từ cột A - L tùy vào số lượng nhân viên, thường là trên 2000 nhân viên.
Em cần dò tìm giờ vào và ra cho từng nhân viên (giờ vào là IN của MORNING, ra là ô có dữ liệu cuối cùng trong dãy từ B đến G, VD: ngày 1 cho nhân viên 500001 là E6, ngày 3 là D3)
Với ngày tùy ý vào ô P1, một cách tổng quát và tối ưu (để dùng lại cho tháng sau, dữ liệu nhiều nên cần nhanh)
Em đã làm được như trong file đính kèm, nhưng vẫn chưa tổng quát, vì phần out không làm được một cách tổng quát.
Xin các anh chị giúp em công thức cho phần out, và xem lại các phần trước như vậy đã tối ưu chưa? Còn cách nào nhanh hơn nữa không?

File bị hỏng, down vềkhông thể mở được, up file khác đi

File bị hỏng, down về kh
 
Tôi tải file vẫn được nhưng không hiểu ý tác giả muốn có kết quả tổng quát là sao.
đoán đại

Chắc muốn tổng quát cho từng nhân viên, mỗi nhân viên có vùng bảng tra khác nhau : nhân viên 1 có vùng tra từ dòng 1:21; NV2 có dòng tra từ 23 đến 43,........

Nhưng ngày 1,2 đã tổng quát rồi, sao lại muốn khác thì không hiểu (bạn thay P1 thành giá trị 4 thì thấy kết quả mơi đúng mà?) : vậy tổng quát cái chi?
 
Phần mềm xuất ra Time Card từ cột A - L tùy vào số lượng nhân viên, thường là trên 2000 nhân viên.
Em cần dò tìm giờ vào và ra cho từng nhân viên (giờ vào là IN của MORNING, ra là ô có dữ liệu cuối cùng trong dãy từ B đến G, VD: ngày 1 cho nhân viên 500001 là E6, ngày 3 là D3)

Không hiểu, đoán và làm đại, không trúng thì thôi. Hên xui nhé. Bấm vào sheet2 xem kết quả. Nhớ phải enable macros nha
 

File đính kèm

Thay ô P1 = 4 thì chỉ giờ IN chính xác thôi, còn giờ OUT thì sai
VLOOKUP(P$1,$A6:$G20,7-COUNTBLANK($B6:$G6),0)
Phần $B6:$G6 là của ngày 1 thôi, còn ngày 4 là: $B9:$G9
Nó không tổng quát là chỗ đó, muốn dò ngày 4 em phải sửa thủ công thành $B9:$G9, tương tự cho các ngày còn lại ... rất mất công.
Em muốn nhờ anh chị chỉ giúp sao cho khi nhập 4 vào ô P1 thì nó có thể lấy giá trị sau cùng trong dãy $B9:$G9
Còn ngày 2 là em VD thêm cho thấy sự thủ công của công thức em làm, trên thực tế em chỉ cần kết quả là cột P và Q thôi
P1: ngày cần tìm
P2: giờ IN
Q2: giờ OUT
Thanks!!!
 
đoán đại

Chắc muốn tổng quát cho từng nhân viên, mỗi nhân viên có vùng bảng tra khác nhau : nhân viên 1 có vùng tra từ dòng 1:21; NV2 có dòng tra từ 23 đến 43,........

Nhưng ngày 1,2 đã tổng quát rồi, sao lại muốn khác thì không hiểu (bạn thay P1 thành giá trị 4 thì thấy kết quả mơi đúng mà?) : vậy tổng quát cái chi?

Thay ô P1 = 4 thì chỉ giờ IN chính xác thôi, còn giờ OUT thì sai
VLOOKUP(P$1,$A6:$G20,7-COUNTBLANK($B6:$G6),0)
Phần $B6:$G6 là của ngày 1 thôi, còn ngày 4 là: $B9:$G9
Nó không tổng quát là chỗ đó, muốn dò ngày 4 em phải sửa thủ công thành $B9:$G9, tương tự cho các ngày còn lại ... rất mất công.
Em muốn nhờ anh chị chỉ giúp sao cho khi nhập 4 vào ô P1 thì nó có thể lấy giá trị sau cùng trong dãy $B9:$G9
Còn ngày 2 là em VD thêm cho thấy sự thủ công của công thức em làm, trên thực tế em chỉ cần kết quả là cột P và Q thôi
P1: ngày cần tìm
P2: giờ IN
Q2: giờ OUT
Thanks!!!
 
Không hiểu, đoán và làm đại, không trúng thì thôi. Hên xui nhé. Bấm vào sheet2 xem kết quả. Nhớ phải enable macros nha
Thanks anh! Gần đúng ý em rồi, nhưng em cần công thức tự thay đổi chứ không phải mình làm thành nhiều ngày, chỉ nhập ngày vào o P1 thôi, công thức OUT sẽ lấy dữ liệu ô cuối cùng trong dãy từ B đến G tương ứng, chứ ko phải MAX trong dãy từ B đến G.
VD: OUT của NV 500001 vào ngày 1 là E6, nhưng ngày 3 là D8 và ngày 4 là C9 ...
 
Thay ô P1 = 4 thì chỉ giờ IN chính xác thôi, còn giờ OUT thì sai
VLOOKUP(P$1,$A6:$G20,7-COUNTBLANK($B6:$G6),0)
Phần $B6:$G6 là của ngày 1 thôi, còn ngày 4 là: $B9:$G9
Nó không tổng quát là chỗ đó, muốn dò ngày 4 em phải sửa thủ công thành $B9:$G9, tương tự cho các ngày còn lại ... rất mất công.
Em muốn nhờ anh chị chỉ giúp sao cho khi nhập 4 vào ô P1 thì nó có thể lấy giá trị sau cùng trong dãy $B9:$G9
Còn ngày 2 là em VD thêm cho thấy sự thủ công của công thức em làm, trên thực tế em chỉ cần kết quả là cột P và Q thôi

vậy thử tạm công thức sau cho Q2
=IF(P2="","",INDEX($B$6:$G$20,MATCH(P$1,$A$6:$A$20,0),MATCH(9.99999E+307,INDEX(1*INDEX($B$6:$G$20,MATCH(P$1,$A$6:$A$20,0),0),0),1)))



hoặc
Nếu đúng là luôn là ngày cột A theo thứ tự 1 đến 15 , thì dùng công thức cho Q2 như sau cho ngắn
=IF(P2="","",INDEX($B$6:$G$20,P$1,MATCH(9.99999E+307,INDEX(1*INDEX($B$6:$G$20,P$1,0),0),1)))
(mở rộng: nếu ngày cột A đúng thứ tự ví như 16,17,...31 thì cũng tương tự thay chút chỗ P$1 thành P$1-15)

rồi xét tiếp
 
Lần chỉnh sửa cuối:
Hãy quên công thức đi là vừa bạn à!

Xem trong file đính kèm thử nha!
 

File đính kèm

Hình như bài số #3 của Ba Tê làm đúng rồi, công thức đơn giản & hiệu quả
:=\+Híc:=\+
 
vậy thử tạm công thức sau cho Q2
=IF(P2="","",INDEX($B$6:$G$20,MATCH(P$1,$A$6:$A$20,0),MATCH(9.99999E+307,INDEX(1*INDEX($B$6:$G$20,MATCH(P$1,$A$6:$A$20,0),0),0),1)))

hoặc
Nếu đúng là luôn là ngày cột A theo thứ tự 1 đến 15 , thì dùng công thức cho Q2 như sau cho ngắn
=IF(P2="","",INDEX($B$6:$G$20,P$1,MATCH(9.99999E+307,INDEX(1*INDEX($B$6:$G$20,P$1,0),0),1)))
(mở rộng: nếu ngày cột A đúng thứ tự ví như 16,17,...31 thì cũng tương tự thay chút chỗ P$1 thành P$1-15)

rồi xét tiếp

Phiền anh làm trực tiếp vào file rồi attach lên được không? Em làm thử vào file của em nhưng không được! Thanks!
Còn về cấu trúc nguồn thì mình chọn từ ngày nào đến ngày nào thì phần mềm sẽ xuất ra bấy nhiu ngày + phần thông tin NV phía trên.
VD: Trong file attach của em là từ ngày 1-15 của 3 nhân viên đầu tiên, thường thì sẽ xuất nữa tháng đầu và nữa tháng cuối.
 
Phiền anh làm trực tiếp vào file rồi attach lên được không? Em làm thử vào file của em nhưng không được! Thanks!
Còn về cấu trúc nguồn thì mình chọn từ ngày nào đến ngày nào thì phần mềm sẽ xuất ra bấy nhiu ngày + phần thông tin NV phía trên.
VD: Trong file attach của em là từ ngày 1-15 của 3 nhân viên đầu tiên, thường thì sẽ xuất nữa tháng đầu và nữa tháng cuối.

trời, vất vả thế này, sao bạn không tự giúp mình

------------
Chót giúp thì giúp luôn thể vậy,
đã làm tự động cho cả vùng N4:R14 -- muốn mở rộng chỉ cần Copy N14:R14 kéo xuống dưới thôi (Muốn hay nữa thì Cắt cả vùng này N1:R14 sang she et khác

Dữ liệu cứ copy vào tiếp và kéo dài công thức là dùng được,

Dùng file của bate để làm, cám ơn bác bate

Chủ thớt xem kỹ lại nhé, cho nó chuẩn
xem file kèm
 

File đính kèm

trời, vất vả thế này, sao bạn không tự giúp mình

------------
Chót giúp thì giúp luôn thể vậy,
đã làm tự động cho cả vùng N4:R14 -- muốn mở rộng chỉ cần Copy N14:R14 kéo xuống dưới thôi (Muốn hay nữa thì Cắt cả vùng này N1:R14 sang she et khác

Dữ liệu cứ copy vào tiếp và kéo dài công thức là dùng được,

Dùng file của bate để làm, cám ơn bác bate

Chủ thớt xem kỹ lại nhé, cho nó chuẩn
xem file kèm
Thanks anh! Anh nhiệt tình quá, chuẩn không cần chỉnh rồi anh @$@!^%
 
Phiền anh làm trực tiếp vào file rồi attach lên được không? Em làm thử vào file của em nhưng không được! Thanks!
Còn về cấu trúc nguồn thì mình chọn từ ngày nào đến ngày nào thì phần mềm sẽ xuất ra bấy nhiu ngày + phần thông tin NV phía trên.
VD: Trong file attach của em là từ ngày 1-15 của 3 nhân viên đầu tiên, thường thì sẽ xuất nữa tháng đầu và nữa tháng cuối.
Như bạn nói thì mỗi lần xuất nửa tháng, mỗi nhân viên mất khoảng 22 dòng, 2000 NV khoảng 44000 dòng.
Với 2000 NV và 2000 dòng công thức thì có lẽ như ... "Rùa bò 1 chân".
Híc!
Thử File này với file công thức 2000 NV xem sao? Tôi không có "can đảm" thử.
Chỉ cần nhớ Enable Macros là được.
 

File đính kèm

Như bạn nói thì mỗi lần xuất nửa tháng, mỗi nhân viên mất khoảng 22 dòng, 2000 NV khoảng 44000 dòng.
Với 2000 NV và 2000 dòng công thức thì có lẽ như ... "Rùa bò 1 chân".
Híc!
Thử File này với file công thức 2000 NV xem sao? Tôi không có "can đảm" thử.
Chỉ cần nhớ Enable Macros là được.
^^ đúng rồi đó anh, đó là lý do vì sao mỗi lần chỉ xuất từ phần mềm ra được nữa tháng thôi, vì nguyên tháng thì Excel không đủ chỗ chứa: 22x2500=55000 đủ chết rồi
Mà bên em dùng excel lập báo cáo những gì phần mềm không có thôi nên cũng lọt chọt, không chuyên nghiệp nên đành chịu thôi, Macro em chưa bao giờ dùng đến nên cũng không biết nhiều lắm, mang tiếng là IT nhưng lập trình em chịu, lâu lâu hỗ trợ thêm cho Nhân sự thôi chứ em chuyên phần cứng - mạng.
Thanks anh!
 
Web KT

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

Back
Top Bottom