Xác định giá trị mới nhất và cũ nhất trong cùng 1 ngày

Liên hệ QC

NgocSangTran

Thành viên mới
Tham gia
14/5/20
Bài viết
9
Được thích
2
Chào mọi người,

Hiện tại em có vấn đề cần sự giúp đỡ từ các anh(chị) như sau:

+ Trong list data cần lấy dữ liệu theo ngày,
* Nếu ngày có nhiều data thì cần lấy ra 2 giá trị mới nhất và cũ nhất
* Nếu ngày chỉ có duy nhất 1 data thì lấy nó và xem nó là mới nhất

Các anh chị xem giúp em nhé. Em cảm ơn !

1590557341030.png
 

File đính kèm

Chào mọi người,

Hiện tại em có vấn đề cần sự giúp đỡ từ các anh(chị) như sau:

+ Trong list data cần lấy dữ liệu theo ngày,
* Nếu ngày có nhiều data thì cần lấy ra 2 giá trị mới nhất và cũ nhất
* Nếu ngày chỉ có duy nhất 1 data thì lấy nó và xem nó là mới nhất

Các anh chị xem giúp em nhé. Em cảm ơn !

View attachment 238126
Bạn thử công thức sau nhé
=IF(E2=MAX(IF(DAY($E$2:$E$14)=DAY(E2),$E$2:$E$14,0)),"Mới nhất",IF(E2=MIN(IF(DAY($E$2:$E$14)=DAY(E2),$E$2:$E$14,"Z")),"Cũ nhất",""))
Kết thúc bằng Ctrl + shift + Enter
 
Cách khác né hàm mảng:
Mã:
=IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14>=E2))=1,"Mới nhất",IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14<=E2))=1,"Cũ nhất",""))
Chỉ enter
 
Cách khác né hàm mảng:
Mã:
=IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14>=E2))=1,"Mới nhất",IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14<=E2))=1,"Cũ nhất",""))
Chỉ enter
cảm ơn bebo
Bài đã được tự động gộp:

Bạn thử công thức sau nhé
=IF(E2=MAX(IF(DAY($E$2:$E$14)=DAY(E2),$E$2:$E$14,0)),"Mới nhất",IF(E2=MIN(IF(DAY($E$2:$E$14)=DAY(E2),$E$2:$E$14,"Z")),"Cũ nhất",""))
Kết thúc bằng Ctrl + shift + Enter
Cảm ơn nothing
 
Cách khác né hàm mảng:
Mã:
=IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14>=E2))=1,"Mới nhất",IF(SUMPRODUCT((INT($E$2:$E$14)=INT(E2))*($E$2:$E$14<=E2))=1,"Cũ nhất",""))
Chỉ enter
Chào bebo021999,
Cho mình hỏi là:
+ (INT($E$2:$E$14)=INT(E2): cái này so sánh như thế nào ?
+ ($E$2:$E$14>=E2): cái này thì so sánh cho kết quả True/False hay sao ?
 
Chào bebo021999,
Cho mình hỏi là:
+ (INT($E$2:$E$14)=INT(E2): cái này so sánh như thế nào ?
+ ($E$2:$E$14>=E2): cái này thì so sánh cho kết quả True/False hay sao ?
(INT($E$2:$E$14)=INT(E2): Cột E là ngày dưới dạng ngày và giờ tức là số số thập phân, dùng INT để quy về 0h của ngày để đồng nhất cột E về số nguyên để so sánh
Biểu thức này trả về TRUE/FALSE nếu cùng ngày là TRUE
($E$2:$E$14>=E2): Trả về TRUE nếu ngày tại cột E lớn hơn hay bằng E2
2 biểu thức này nhân với nhau tạo dãy 1 hay 0, dòng nào có số 1 tương ứng thỏa 2 điều kiện ngày = E2 và giờ >=E2
Sau đó dùng SUMPRODUCT để đếm, nếu là số 1 tức là chỉ có 1 giá trị >= ô E2, nghĩa là E2 là lớn nhất
Nếu dùng <=E2, ra kết quả cho ngày nhỏ nhất
 
Chào mọi người,

Hiện tại em có vấn đề cần sự giúp đỡ từ các anh(chị) như sau:

+ Trong list data cần lấy dữ liệu theo ngày,
* Nếu ngày có nhiều data thì cần lấy ra 2 giá trị mới nhất và cũ nhất
* Nếu ngày chỉ có duy nhất 1 data thì lấy nó và xem nó là mới nhất

Các anh chị xem giúp em nhé. Em cảm ơn !

View attachment 238126
Nếu thời gian cột "read_time" đã sort sẵn từ lớn đến nhỏ, và không chứa dòng trống nào xen giữa dữ liệu, thì đơn giản chỉ dùng:
Mã:
H2=IF(COUNTIF($E$2:E2,"<"&INT(E2)+1)=1,"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Hoặc
H2=IF(INT(E2)<>INT(N(E1)),"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Chỉ Enter, rồi copy xuống.

Thân
 
Lần chỉnh sửa cuối:
Nếu thời gian cột "read_time" đã sort sẵn từ lớn đến nhỏ, và không chứa dòng trống nào xen giữa dữ liệu, thì đơn giản chỉ dùng:
Mã:
H2=IF(COUNTIF($E$2:E2,"<"&INT(E2)+1)=1,"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Hoặc
H2=IF(INT(E2)<>INT(N(E1)),"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Chỉ Enter, rồi copy xuống.

Thân
chào Phan Thế Hiệp,
Method này của bạn có vẻ đơn giản dễ hiểu hơn nhiều đấy,.
cảm ơn bạn rất nhiều.
Bài đã được tự động gộp:

(INT($E$2:$E$14)=INT(E2): Cột E là ngày dưới dạng ngày và giờ tức là số số thập phân, dùng INT để quy về 0h của ngày để đồng nhất cột E về số nguyên để so sánh
Biểu thức này trả về TRUE/FALSE nếu cùng ngày là TRUE
($E$2:$E$14>=E2): Trả về TRUE nếu ngày tại cột E lớn hơn hay bằng E2
2 biểu thức này nhân với nhau tạo dãy 1 hay 0, dòng nào có số 1 tương ứng thỏa 2 điều kiện ngày = E2 và giờ >=E2
Sau đó dùng SUMPRODUCT để đếm, nếu là số 1 tức là chỉ có 1 giá trị >= ô E2, nghĩa là E2 là lớn nhất
Nếu dùng <=E2, ra kết quả cho ngày nhỏ nhất
Cảm ơn bebo đã giải thích.
 
Nếu thời gian cột "read_time" đã sort sẵn từ lớn đến nhỏ, và không chứa dòng trống nào xen giữa dữ liệu, thì đơn giản chỉ dùng:
Mã:
H2=IF(COUNTIF($E$2:E2,"<"&INT(E2)+1)=1,"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Hoặc
H2=IF(INT(E2)<>INT(N(E1)),"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
Chỉ Enter, rồi copy xuống.

Thân
Chào Phan Thế Hiệp,
Giải thích dùm mình ý nghĩa của từng cái trong lệnh này nhé :=IF(COUNTIF($E$2:E2,"<"&INT(E2)+1)=1,"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
+ INT(E2) cho ra giá trị gì ?
+ "$E$2:E2" : mình không hiểu ý nghĩa của cái này ?
+ INT(E2)+1: kết quả cho ra như thế nào ?
 
Chào Phan Thế Hiệp,
Giải thích dùm mình ý nghĩa của từng cái trong lệnh này nhé :=IF(COUNTIF($E$2:E2,"<"&INT(E2)+1)=1,"Mới nhất",IF(INT(E2)<>INT(E3),"Cũ nhất",""))
+ INT(E2) cho ra giá trị gì ?
+ "$E$2:E2" : mình không hiểu ý nghĩa của cái này ?
+ INT(E2)+1: kết quả cho ra như thế nào ?
Ô E2 chứa dữ liệu "dạng ngày"= 27/05/2020 08:35:35, thực chất bản thân của nó là 1 con số để ghi nhận "ngày giờ phút giây", cụ thể là: 43978.3580439814. Nôm na là số ngày giờ tính từ mốc 0h ngày 01/01/1900 đến thời gian ô E2 đó, với số nguyên 43978 là biểu thị tổng số ngày, còn số lẻ là giờ phút giây. Bạn có thể đứng tại ô E2 rồi định dạng bằng cách nhấn nút (button) "," trên menu "Home/Number" sẽ thấy ngay.

Vì nó là 1 số nên bạn dùng hàm INT() để lấy phần nguyên, tức lấy ngày, còn dùng MOD(E2,1) thì lấy giờ phút giây.
=>COUNTIF($E$2:E2,"<"&INT(E2)+1)=1 Dùng để đếm xem có bao nhiêu ngày giống ngày mà công thức đang tại dòng, nhưng chỉ xét dòng nào xuất hiện đầu tiên (tức =1)
và =>INT(E2)+1 chính là .... ngày hôm sau ngày đó. :)

Thân
 
Web KT

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

Back
Top Bottom