Hàm tìm giá trị ngày tháng với nhiều điều kiện (2 người xem)

Liên hệ QC

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

mhung12005

Thành viên chậm chạm
Tham gia
20/7/11
Bài viết
1,598
Được thích
1,261
Nghề nghiệp
Đâu có việc thì làm
Chào các anh các chi,

Em có bài toán này làm mãi không ra, mong các anh chị trong diễn đàn giúp đỡ. Yêu cầu em đã chú thích trong file đính kèm.
Rất cảm ơn các anh, chị.
 
Chào các anh các chi,

Em có bài toán này làm mãi không ra, mong các anh chị trong diễn đàn giúp đỡ. Yêu cầu em đã chú thích trong file đính kèm.
Rất cảm ơn các anh, chị.
Lấy cái gì nói không hiểu gì hết trội giải thích rõ hơn 1 tí nưaz nha bạn
 
Lấy cái gì nói không hiểu gì hết trội giải thích rõ hơn 1 tí nưaz nha bạn

Bạn ơi mình muốn lấy giá trị ngày dựa vào ngày hôm nay hàm "today()" và theo các điều kiện mình đã ví dụ trong file đính kèm đó. Cảm ơn bạn.
 
Bạn ơi mình muốn lấy giá trị ngày dựa vào ngày hôm nay hàm "today()" và theo các điều kiện mình đã ví dụ trong file đính kèm đó. Cảm ơn bạn.

Giả định ô ngày tháng cần TRA ( =TODAY() chẳng hạn) đặt tại ô B50,
thì ô kết quả (chẳng hạn B51) dùng công thức sau:

=INDEX($C$4:$BL$4,MATCH(-1,INDEX(($C$4:$BL$4>$B$50)*(($C$44:$BL$44>0)-($D$44:$BM$44>0)),0),0)+1)

Bạn test lại kỹ nhé , tôi test mấy trường hợp bạn đưa ra đều đúng

Công thức chắc không khó hiểu nhỉ, bạn thừa khả năng đủ hiểu đúng không?
 
Để chặn trường hợp toàn 0 dòng 44 ở cuối thời đoạn như giờ (ngày tra là ngày 19/1/2012) chẳng hạn, KHI đó lấy giá trị là ngày cuối cùng giai đoạn (31/1/2012 như trong file)

Thì dùng công thức này

=LOOKUP(9.99999E+307,CHOOSE({1;2},$BL$4,INDEX($C$4:$BL$4,MATCH(-1,INDEX(($C$4:$BL$4>$B$50)*(($C$44:$BL$44>0)-($D$44:$BM$44>0)),0),0)+1)))

Vẫn với
B50 - ngày hiện tại
B51 - ô kết quả chứa công thức trên chẳng hạn

.

B5
 
Giả định ô ngày tháng cần TRA ( =TODAY() chẳng hạn) đặt tại ô B50,
thì ô kết quả (chẳng hạn B51) dùng công thức sau:



Bạn test lại kỹ nhé , tôi test mấy trường hợp bạn đưa ra đều đúng

Công thức chắc không khó hiểu nhỉ, bạn thừa khả năng đủ hiểu đúng không?

Chính xác, chỉ cần thay cái $B$50 của bạn thành hàm today() là đúng ý mình luôn. Cảm ơn bạn rất nhiều. Mình cũng không rành về mảng lắm nhưng tách công thức ra và xem từng mảng một thì cũng có thể hiểu được. Một lần nữa xin cảm ơn bạn.

Chúc bạn luôn vui vẻ và hạnh phúc.
 
Để chặn trường hợp toàn 0 dòng 44 ở cuối thời đoạn như giờ (ngày tra là ngày 19/1/2012) chẳng hạn, KHI đó lấy giá trị là ngày cuối cùng giai đoạn (31/1/2012 như trong file)

Thì dùng công thức này



Vẫn với
B50 - ngày hiện tại
B51 - ô kết quả chứa công thức trên chẳng hạn

.

B5


Bạn ơi, mình không hiểu cái "LOOKUP(9.99999E+307,...) có nghĩa là như thế nào vậy ? Mình không hiểu đoạn này. Bạn giải thích giúp mình với nhé.
 
Để chặn trường hợp toàn 0 dòng 44 ở cuối thời đoạn như giờ (ngày tra là ngày 19/1/2012) chẳng hạn, KHI đó lấy giá trị là ngày cuối cùng giai đoạn (31/1/2012 như trong file)

Thì dùng công thức này



Vẫn với
B50 - ngày hiện tại
B51 - ô kết quả chứa công thức trên chẳng hạn

.

B5

Xin lỗi bạn còn 1 điều kiện nữa mình quên mất là Ví dụ: Nếu ngày tra là ngày 19/12/2011 thì kết quả trả về là ngày 21/12/2011. Hoặc nếu ngày tra là ngày 20/12/2011 thì kết quả trả về là ngày 22/12/2011. Có nghĩa là nếu không có số 0 nào liên tiếp gần nhất thì cứ cách 1 ô là lấy giá trị ngày tương ứng. Bạn giúp mình thêm với nhé. Phiền bạn.
Ming tin bạn sớm.
 
Xin lỗi bạn còn 1 điều kiện nữa mình quên mất là Ví dụ: Nếu ngày tra là ngày 19/12/2011 thì kết quả trả về là ngày 21/12/2011. Hoặc nếu ngày tra là ngày 20/12/2011 thì kết quả trả về là ngày 22/12/2011. Có nghĩa là nếu không có số 0 nào liên tiếp gần nhất thì cứ cách 1 ô là lấy giá trị ngày tương ứng. Bạn giúp mình thêm với nhé. Phiền bạn.
Ming tin bạn sớm.

Giờ đơn giản không sử dụng LOOKUP nữa, muốn tìm hiểu bạn xem tại đây, http://www.giaiphapexcel.com/forum/...-viết-hàm-lọc-dữ-liệu-với&p=338855#post338855
và liên hệ HMTc giúp giải thích á (thanks HMTc)

công thức thế này đây,

đã đảm bảo cả trường hợp 0 liên tục nêu trên,
cũng như điều kiện mới của bạn
=INDEX($C$4:$BL$4,MIN(MATCH(1,INDEX(($C$4:$BL$4>$B$50+1)*($C$44:$BL$44>0),0),0),1+MATCH(-1,INDEX(($C$4:$BL$4>$B$50+2)*(($C$44:$BL$44>0)-($D$44:$BM$44>0)),0),0)))

Bạn test cẩn thận nhé, đảm bảo đúng trước khi ứng dụng thực, tôi không có điều kiện test hết đặc biệt với đ.k mới,
 
Lần chỉnh sửa cuối:
bạn sửa lại chỗ này chút nhé
2 thành 1, quá trình hiệu chỉnh công thức tôi quên không chỉnh lại,
Chỉnh lại như công thức sau
=INDEX($C$4:$BL$4,MIN(MATCH(1,INDEX(($C$4:$BL$4>$B$50+1)*($C$44:$BL$44>0),0),0),1+MATCH(-1,INDEX(($C$4:$BL$4>$B$50+1)*(($C$44:$BL$44>0)-($D$44:$BM$44>0)),0),0)))


Bạn test cẩn thận nhé, đảm bảo đúng trước khi ứng dụng thực, tôi không có điều kiện test hết đặc biệt với đ.k mới,
 
Giờ đơn giản không sử dụng LOOKUP nữa, muốn tìm hiểu bạn xem tại đây, http://www.giaiphapexcel.com/forum/showthread.php?53627-Nhờ-các-bạn-giúp-minh-viết-hàm-lọc-dữ-liệu-với&p=338855#post338855
và liên hệ HMTc giúp giải thích á (thanks HMTc)

công thức thế này đây,

đã đảm bảo cả trường hợp 0 liên tục nêu trên,
cũng như điều kiện mới của bạn


Bạn test cẩn thận nhé, đảm bảo đúng trước khi ứng dụng thực, tôi không có điều kiện test hết đặc biệt với đ.k mới,


Ok, mình đã test xong rồi, đúng như mong muốn bạn ah, các điều kiện đã thỏa mãn. Rất rất cảm ơn bạn đã nhiệt tình giúp đỡ mình. Cảm ơn bạn.
 
bạn sửa lại chỗ này chút nhé
2 thành 1, quá trình hiệu chỉnh công thức tôi quên không chỉnh lại,
Chỉnh lại như công thức sau
=INDEX($C$4:$BL$4,MIN(MATCH(1,INDEX(($C$4:$BL$4>$B$50+1)*($C$44:$BL$44>0),0),0),1+MATCH(-1,INDEX(($C$4:$BL$4>$B$50+1)*(($C$44:$BL$44>0)-($D$44:$BM$44>0)),0),0)))


Bạn test cẩn thận nhé, đảm bảo đúng trước khi ứng dụng thực, tôi không có điều kiện test hết đặc biệt với đ.k mới,

Công thức này thì khác công thức trước ở cái gì vậy bạn ? Công thức trước mình test cũng ok rồi mà.
 
Công thức này thì khác công thức trước ở cái gì vậy bạn ? Công thức trước mình test cũng ok rồi mà.

Khác chỗ tôi bôi đỏ đó +1
Thực ra cho nó chuẩn sát hơn, chứ không ảnh hưởng đến với tình trạng số liệu của bạn, chỉ ảnh hưởng khi chỉ có 1 số 0 kẹp giữa các số dương liên tục mà thôi- có thể ảnh hưởng,

Về mặt thuật toán thì phải là +1 vì ở đây dùng dấu > (tức là tính từ phần tử +2 trở đi (nếu dùng dấu >= thì chỗ đó là +2) tương ứng vị trí xét ở điều kiện mới đó
 
Lần chỉnh sửa cuối:
Khác chỗ tôi bôi đỏ đó +1
Thực ra cho nó chuẩn sát hơn, chứ không ảnh hưởng đến với tình trạng số liệu của bạn, chỉ ảnh hưởng khi chỉ có 1 số 0 kẹp giữa các số dương liên tục mà thôi- có thể ảnh hưởng,

Về mặt thuật toán thì phải là +1 vì ở đây dùng dấu > (tức là tính từ phần tử +2 trở đi (nếu dùng dấu >= thì chỗ đó là +2) tương ứng vị trí xét ở điều kiện mới đó

Hix, hôm qua đang chat với bạn thì mất điện.
Với 2 công thức của bạn mình test trong mọi trường hợp của mình đều ok. Kể cả khi mình rút đi còn 1 số 0 trong 1 khoảng dài vẫn cho ra kết quả đúng và như nhau.
Xin cảm ơn bạn đã rất nhiệt tình giúp đỡ mình.
Nếu bạn ở Hải Dương thì mình mời bạn một chầu cafe + giao lưu. Còn không thì khi nào có điều kiện đi qua Hải Dương thì call cho mình 0936717797.

Many thanks.
 
Web KT

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

Back
Top Bottom