Tìm giá trị cuối cùng trong dãy số (có blank cell) (1 người xem)

Liên hệ QC

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

Gia_Khue

Thành viên chính thức
Tham gia
18/12/07
Bài viết
83
Được thích
13
Nghề nghiệp
BI
Gia Khuê chào các bác,

Nhờ các bác chỉ giúp GK cách tìm giá trị cuối cùng trong 1 dãy số mà giữa các dãy số này lại có các blank cell.

Thật ra từ raw data thì có thể pivot table để tìm ra max date. Vì yêu cầu của report nên GK pivot 1 lần theo như file đính kèm, rồi sau đó pivot thêm lần nữa để ra được max date.

Các bác chỉ giúp GK xem có cách nào mà lấy được ngày cuối cùng trực tiếp từ data ở sheet Report không với. Lúc đầu GK thử dùng offset, nhưng mà chỉ áp dụng được với data không có blank cell, còn có blank cell thì phá sản.

Cám ơn các bác nhiều.
GK
 

File đính kèm

Bạn xem trong file đính kèm có được không nhes!
 

File đính kèm

Sao già lòng vòng khổ thế!
Giả sử ô E16 già gõ A
Già nhập công thức sau là có ngày cuối rồi

=OFFSET($A$1,MATCH(E16,$A$2:$A$59,0)+COUNTIF($A$2:$A$59,E16)-1,1)

Hoặc gọn hown:

=OFFSET($A$1,MATCH(E16,A2:A400,2),1)

Già chẳng phải Pivot chi hết
 
Lần chỉnh sửa cuối:
Thế này thôi
Tại B2 dùng:
PHP:
=OFFSET($B$1,,MATCH(255,$C2:$BB2),)
Sao mà được chứ!
Gõ xong công thức này rồi gõ vào cell BA2 số 1000 thử xem
Mọi thứ có ở đây nè:
http://www.giaiphapexcel.com/forum/showthread.php?7669-Nh%E1%BB%AFng-c%C3%B4ng-th%E1%BB%A9c-%C4%91%E1%BB%99c-%C4%91%C3%A1o&
Hoặc dùng công thức này cho cell B2 (sheet Report)
PHP:
=LOOKUP(2,1/(2:2<>""),$1:$1)
Kéo fill xuống cho B3
-------------
Có điều tôi phân vân quá! Theo như PivotTable ở sheet Data thì rõ ràng bạn Gia_Khue đang tìm NGÀY LỚN NHẤT (Max theo điều kiện)... còn theo bạn mô tả thì lại đang tìm NGÀY NẰM Ở CELL CUỐI CÙNG ----> Xin tác giả làm rõ vụ này vì 2 chuyện hoàn toàn khác nhau
 
Lần chỉnh sửa cuối:
Thôi chết, chưa đọc kỹ bài của già. Vậy thì tôi hiến già 1 hàm UDF con con nhưng khá tin cậy:

Mã:
Function Mdate(Ma As String, Rng As Range, iC As Integer)
Dim tam, i
For i = Rng.Rows.Count To 1 Step -1
If Rng.Cells(i, 1) = Ma Then
If Mdate < Rng.Cells(i, iC) Then Mdate = Rng.Cells(i, iC)
End If
Next
End Function
Cú pháp: =Mdate(Mã cần tìm ngày,Vùng có chứa cả mã và ngày, cột thứ mấy là cột ngày)


Giả sử ô E3 là "A" ô F3 muốn có kết quả nhập: =Mdate(E3,A2:B100,2)
 

File đính kèm

Lần chỉnh sửa cuối:
Gia Khuê cám ơn các bác nhiều nhiều. Bác chung team với GK nói là dùng offset chung với match được, nhưng GK mò không ra cách đấy, bác ý thì đã bị "formula blind" sau khi dòm đống số ngổn ngang nên chả nghĩ gì được nữa. May quá nhờ các bác chỉ lối.

Thôi chết, chưa đọc kỹ bài của già. Vậy thì tôi hiến già 1 hàm UDF con con nhưng khá tin cậy:

Mã:
Function Mdate(Ma As String, Rng As Range, iC As Integer)
Dim tam, i
For i = Rng.Rows.Count To 1 Step -1
If Rng.Cells(i, 1) = Ma Then
If Mdate < Rng.Cells(i, iC) Then Mdate = Rng.Cells(i, iC)
End If
Next
End Function
Cú pháp: =Mdate(Mã cần tìm ngày,Vùng có chứa cả mã và ngày, cột thứ mấy là cột ngày)


Giả sử ô E3 là "A" ô F3 muốn có kết quả nhập: =Mdate(E3,A2:B100,2)

@ bác Sealand, bác nói "già" là GK phải hông? GK nhớ chỉ có 1 vài người trên 1 diễn đàn khác hay gọi GK là "già" à, hông biết bác có từng ở diễn đàn đấy?
 
Gia Khuê cám ơn các bác nhiều nhiều. Bác chung team với GK nói là dùng offset chung với match được, nhưng GK mò không ra cách đấy, bác ý thì đã bị "formula blind" sau khi dòm đống số ngổn ngang nên chả nghĩ gì được nữa. May quá nhờ các bác chỉ lối.
@ bác Sealand, bác nói "già" là GK phải hông? GK nhớ chỉ có 1 vài người trên 1 diễn đàn khác hay gọi GK là "già" à, hông biết bác có từng ở diễn đàn đấy?
Lòng vòng 1 hồi, cuối cùng bạn vẫn chưa nói được ý chính (mà tôi đã hỏi ở bài 5) ---> Vậy có phải là phụ lòng người giúp bạn không nhỉ?
Hic... không mệt vì suy nghĩ giải pháp mà mệt vì phải suy nghĩ xem nên hiểu câu hỏi là ý muốn gì
 
Sao mà được chứ!
Gõ xong công thức này rồi gõ vào cell BA2 số 1000 thử xem
Mọi thứ có ở đây nè:
http://www.giaiphapexcel.com/forum/showthread.php?7669-Nh%E1%BB%AFng-c%C3%B4ng-th%E1%BB%A9c-%C4%91%E1%BB%99c-%C4%91%C3%A1o&
Hoặc dùng công thức này cho cell B2 (sheet Report)
PHP:
=LOOKUP(2,1/(2:2<>""),$1:$1)
Kéo fill xuống cho B3
-------------
Có điều tôi phân vân quá! Theo như PivotTable ở sheet Data thì rõ ràng bạn Gia_Khue đang tìm NGÀY LỚN NHẤT (Max theo điều kiện)... còn theo bạn mô tả thì lại đang tìm NGÀY NẰM Ở CELL CUỐI CÙNG ----> Xin tác giả làm rõ vụ này vì 2 chuyện hoàn toàn khác nhau

Chắc GK giải thích không rõ.

Yêu cầu là tìm ngày cuối cùng mà khách hàng đã gửi tiền. Raw data là cột A,B,C ở sheet Data. Tuy nhiên formatcua report mà mí sếp yêu cầu thì gồm 1 mớ cột khác trước cái cột Cutomer name ở sheet Report, rồi đến cột Last Active Date, tiếp đến là 1 đống cột cho từng ngày mà có khách hàng gửi tiền.

Kiểu như thế này:

Col A Col B Col C ......... Customer name Last Active Date Date 1 Date 2 Date 3 ........... Date n

Vì lý do đó mà GK phải pivot để ra được 1 mớ các cột Date 1 cho đến Date n, sau đó pivot thêm lần nữa, rồi vlookup đến cái pivot mới này để tìm ra max date.

Giờ các bác chỉ giúp rồi thì GK không cần thêm cái pivot thứ 2 rồi vlookup nữa, GK chỉ cần pivot 1 lần để ra được đúng format.

Bác thấy dường như là lấy ngày nằm ở cell cuối cùng là vì mỗi khách hàng sẽ có ngày gửi tiền khác nhau.

Ví dụ: Khách hàng A gửi ngày 1,3,5,7,9,11,13; khách hàng B lại gửi 2,4,6,8,10,12,14.

Như vậy thì ngày cuối cùng của khách hàng A là 13, của B là 14, nhưng trên report thì vẫn thể hiện tuốt tuồn tuột các cột từ ngày 1 đến ngày 14. Vậy nên GK mới đề cập đến cái vụ blank cell ấy mà.

Bác ndu96081631 ơi, bác đừng giận, GK có thói quen đọc bài cuối cùng đọc lên nên khi ghi bài cám ơn các bác, GK chưa thấy câu hỏi của bác ý mà. Giờ GK trả lời bác rồi nè.

Cám ơn các bác lần nữa
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom