Xin hỏi cách so sánh lấy dữ liệu dựa theo điều kiện max,min

Liên hệ QC

Zorrofantasy

Thành viên mới
Tham gia
19/10/11
Bài viết
18
Được thích
0
Chào mọi người ,
Nhờ mọi người xem giúp cách lấy dữ liệu từ sheet2 sang sheet1 theo cách điều kiện, hiện mình đang dò sheet 2 theo điều kiện để lấy dữ liệu vào sheet 1 , nhưng có 1 vấn đề là mình bị trùng nhiều dữ liệu hàng ở sheet1 và chỉ có sự thay đổi khác nhau ở cột lần cập nhật trong sheet 2 ( nếu dò tất cả mà hàng nào có lần cập nhật lớn nhất )thì lấy kết quả ở cột TG trong sheet 2 trả về sheet 1,

Cảm ơn mọi người đã đọc bài viết,
 

File đính kèm

  • Book1.xlsx
    13.6 KB · Đọc: 18
Bạn dùng công thức dưới đây, kết thúc bằng Ctrl + Shift + Enter nhé

=INDEX(Sheet2!$D$2:$D$23,MATCH(MAX(IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,"")),IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,""),0),1)
 
Chào mọi người ,
Nhờ mọi người xem giúp cách lấy dữ liệu từ sheet2 sang sheet1 theo cách điều kiện, hiện mình đang dò sheet 2 theo điều kiện để lấy dữ liệu vào sheet 1 , nhưng có 1 vấn đề là mình bị trùng nhiều dữ liệu hàng ở sheet1 và chỉ có sự thay đổi khác nhau ở cột lần cập nhật trong sheet 2 ( nếu dò tất cả mà hàng nào có lần cập nhật lớn nhất )thì lấy kết quả ở cột TG trong sheet 2 trả về sheet 1,

Cảm ơn mọi người đã đọc bài viết,
Bạn dùng pivot thử xem được không nhe
 

File đính kèm

  • Book1.xlsx
    17.8 KB · Đọc: 7
Bạn dùng công thức dưới đây, kết thúc bằng Ctrl + Shift + Enter nhé

=INDEX(Sheet2!$D$2:$D$23,MATCH(MAX(IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,"")),IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,""),0),1)
Sao vị trí C4 bị lỗi vậy ?
Thử, nhấn Ctrl+Shift+Enter
Mã:
=MOD(MAX(IFERROR(Sheet2!C$2:C$23/(Sheet2!A$2:A$23=A2)/IF(B2="",1,Sheet2!B$2:B$23=B2)*10^6+Sheet2!D$2:D$23,)),10^6))
 
Lần chỉnh sửa cuối:
Chào mọi người ,
Nhờ mọi người xem giúp cách lấy dữ liệu từ sheet2 sang sheet1 theo cách điều kiện, hiện mình đang dò sheet 2 theo điều kiện để lấy dữ liệu vào sheet 1 , nhưng có 1 vấn đề là mình bị trùng nhiều dữ liệu hàng ở sheet1 và chỉ có sự thay đổi khác nhau ở cột lần cập nhật trong sheet 2 ( nếu dò tất cả mà hàng nào có lần cập nhật lớn nhất )thì lấy kết quả ở cột TG trong sheet 2 trả về sheet 1,

Cảm ơn mọi người đã đọc bài viết,
Các lần cập nhật, nhập tiếp theo dòng cuối của sheet 2
Mã:
=IFERROR(LOOKUP(2,1/(A2=Sheet2!$A$2:$A$23)/((B2=Sheet2!$B$2:$B$23)+(B2="")),Sheet2!$D$2:$D$23),"")
 
Lần chỉnh sửa cuối:
Các lần cập nhật, nhập tiếp theo dòng cuối của sheet 2
Mã:
=IFERROR(LOOKUP(2,1/(A2=Sheet2!$A$2:$A$23)/((B2=Sheet2!$B$2:$B$23)+(B2="")),Sheet2!$D$2:$D$23),"")


Do bảng này em làm demo , vì em đã tổng hợp lại bằng Pivot , đối với trường hợp sử dụng Pivot để ra 1 table sau đó dò,cho nên bảng này không xử theo vấn đề là nhập vào bên dưới được , thì kết quả này chưa được chính xác lắm ,
nhập tiếp theo dòng cuối của sheet 2
, mình có thể xử lý được vấn đề này được không anh
HieuCD , do em thấy công thức của anh nhanh , còn các công thức mảng xử lý khá chậm , do bảng tính của em có khoảng hơn 1k line , em cám ơn anh

=MOD(MAX(IFERROR(Sheet2!C$2:C$23/(Sheet2!A$2:A$23=A2)/IF(B2="",1,Sheet2!B$2:B$23=B2)*10^6+Sheet2!D$2:D$23,)),10^6))
dazkangel , đã test Ok , cám ơn bạn

=INDEX(Sheet2!$D$2:$D$23,MATCH(MAX(IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,"")),IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,""),0),1)
Comet297 cám ơn bạn đã test Ok,
 
Do bảng này em làm demo , vì em đã tổng hợp lại bằng Pivot , đối với trường hợp sử dụng Pivot để ra 1 table sau đó dò,cho nên bảng này không xử theo vấn đề là nhập vào bên dưới được , thì kết quả này chưa được chính xác lắm , , mình có thể xử lý được vấn đề này được không anh
HieuCD , do em thấy công thức của anh nhanh , còn các công thức mảng xử lý khá chậm , do bảng tính của em có khoảng hơn 1k line , em cám ơn anh

=MOD(MAX(IFERROR(Sheet2!C$2:C$23/(Sheet2!A$2:A$23=A2)/IF(B2="",1,Sheet2!B$2:B$23=B2)*10^6+Sheet2!D$2:D$23,)),10^6))
dazkangel , đã test Ok , cám ơn bạn

=INDEX(Sheet2!$D$2:$D$23,MATCH(MAX(IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,"")),IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,""),0),1)
Comet297 cám ơn bạn đã test Ok,
Không xếp thứ tự theo lần cập nhật phải dùng công thức mảng
 
Do bảng này em làm demo , vì em đã tổng hợp lại bằng Pivot , đối với trường hợp sử dụng Pivot để ra 1 table sau đó dò,cho nên bảng này không xử theo vấn đề là nhập vào bên dưới được , thì kết quả này chưa được chính xác lắm , , mình có thể xử lý được vấn đề này được không anh
HieuCD , do em thấy công thức của anh nhanh , còn các công thức mảng xử lý khá chậm , do bảng tính của em có khoảng hơn 1k line , em cám ơn anh

=MOD(MAX(IFERROR(Sheet2!C$2:C$23/(Sheet2!A$2:A$23=A2)/IF(B2="",1,Sheet2!B$2:B$23=B2)*10^6+Sheet2!D$2:D$23,)),10^6))
dazkangel , đã test Ok , cám ơn bạn

=INDEX(Sheet2!$D$2:$D$23,MATCH(MAX(IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,"")),IF(Sheet2!$A$2:$A$23&Sheet2!$B$2:$B$23=A2&B2,Sheet2!$C$2:$C$23,""),0),1)
Comet297 cám ơn bạn đã test Ok,
Mình chưa hiểu lắm về đề bài nên không biết làm có đúng không
Cách này thì không cần sắp xếp theo thứ tự gì cả, phù hợp với bảng pivot di động của bạn và quan trọng là không phải kết thúc bằng ctrl+shift+enter nhé
Mã:
=IFERROR(AGGREGATE(14,6,TG/(TEN=A2)/(MA_BV=B2)/(LCN=AGGREGATE(14,6,LCN/(TEN=A2)/(MA_BV=B2),1)),1),"")
Mình có đặt tên vùng cho công thức nó gọn xíu nhé
 

File đính kèm

  • Book1 (23).xlsx
    14 KB · Đọc: 6
Cám ơn mọi người đã hỗ trợ mình trong câu hỏi trên,

Mình có 1 câu hỏi nữa xin nhờ trợ giúp của các bạn để hoàn thực hiện bảng tính , nội dung như sau :

1. Cũng với cùng ý như #1
Nhờ mọi người xem giúp cách lấy dữ liệu từ sheet2 sang sheet1 theo cách điều kiện, hiện mình đang dò sheet 2 theo điều kiện để lấy dữ liệu vào sheet 1 , nhưng có 1 vấn đề là mình bị trùng nhiều dữ liệu hàng ở sheet1 và chỉ có sự thay đổi khác nhau ở cột lần cập nhật trong sheet 2 ( nếu dò tất cả mà hàng nào có lần cập nhật lớn nhất )thì lấy kết quả ở cột TG trong sheet 2 trả về sheet 1,
, nhưng lần này mình đã làm file đầy đủ rõ ràng, có thay đổi 1 số nội dung

2. Cần dò tìm theo câu 1 , sau đó cộng dồn , sử dụng hàm indirect hoặc gì mình không rõ , vì mình đã thử sử dụng indirect được , nhưng đối với tìm max của cột revise để lấy giá trị thì không được, chỉ dò được 2 điều kiện là cột Name & Rdraw

Mong mọi người hỗ trợ giúp mình , file được đính kèm bên dưới ,

Thanks đã xem bài viết,
 

File đính kèm

  • Book1_2.xlsx
    22.7 KB · Đọc: 5
Ví dụ đối với Name A1111 thì nếu nó tới step 10 , bước hoàn thiện thứ 10 , thì nó sẽ dò sang sheet time có dữ liệu từ step 0- 10 , sau đó dóng xuống hàng tương ứng để cộng dữ liệu từ D2-N2 , theo file đính kèm đó bạn
Vậy là cái A1111 đó mà tới Step10 cho kết quả là 99, Step9 cho kết quả là 63, tương tự Step 8 là 61... phải ko nhỉ
 
Vậy là cái A1111 đó mà tới Step10 cho kết quả là 99, Step9 cho kết quả là 63, tương tự Step 8 là 61... phải ko nhỉ
Vậy thử tham khảo cái này xem ok không
Mã:
=IFERROR(SUMPRODUCT((TIME!$A$2:$A$7=A2)*(TIME!$B$2:$B$7=B2)*(TIME!$C$2:$C$7=AGGREGATE(15,6,TIME!$C$2:$C$7/(TIME!$A$2:$A$7=A2)/(TIME!$B$2:$B$7=B2),1))*(INDIRECT(ADDRESS(2,4,,,"TIME")&":"&ADDRESS(7,D2+4)))),"")
Bài đã được tự động gộp:

Vậy thử tham khảo cái này xem ok không
Mã:
=IFERROR(SUMPRODUCT((TIME!$A$2:$A$7=A2)*(TIME!$B$2:$B$7=B2)*(TIME!$C$2:$C$7=AGGREGATE(15,6,TIME!$C$2:$C$7/(TIME!$A$2:$A$7=A2)/(TIME!$B$2:$B$7=B2),1))*(INDIRECT(ADDRESS(2,4,,,"TIME")&":"&ADDRESS(7,D2+4)))),"")
Nhầm lẫn hàm AGGREGATE chút xíu nhé, đang muốn tìm số lớn nhất lại nhầm thành nhỏ nhất
Sửa công thức 1 xíu xíu
Mã:
=IFERROR(SUMPRODUCT((TIME!$A$2:$A$7=A2)*(TIME!$B$2:$B$7=B2)*(TIME!$C$2:$C$7=AGGREGATE(14,6,TIME!$C$2:$C$7/(TIME!$A$2:$A$7=A2)/(TIME!$B$2:$B$7=B2),1))*(INDIRECT(ADDRESS(2,4,,,"TIME")&":"&ADDRESS(7,D2+4)))),"")
Chỉ định: Nếu không hiểu công thức thì vui lòng không thay đổi vị trí bất kỳ nội dung gì, chỉ được phép thay đổi giá trị ô
 

File đính kèm

  • Book1_2.xlsx
    22.7 KB · Đọc: 4
Lần chỉnh sửa cuối:
Vậy thử tham khảo cái này xem ok không
Mã:
=IFERROR(SUMPRODUCT((TIME!$A$2:$A$7=A2)*(TIME!$B$2:$B$7=B2)*(TIME!$C$2:$C$7=AGGREGATE(15,6,TIME!$C$2:$C$7/(TIME!$A$2:$A$7=A2)/(TIME!$B$2:$B$7=B2),1))*(INDIRECT(ADDRESS(2,4,,,"TIME")&":"&ADDRESS(7,D2+4)))),"")
Bài đã được tự động gộp:


Nhầm lẫn hàm AGGREGATE chút xíu nhé, đang muốn tìm số lớn nhất lại nhầm thành nhỏ nhất
Sửa công thức 1 xíu xíu
Mã:
=IFERROR(SUMPRODUCT((TIME!$A$2:$A$7=A2)*(TIME!$B$2:$B$7=B2)*(TIME!$C$2:$C$7=AGGREGATE(14,6,TIME!$C$2:$C$7/(TIME!$A$2:$A$7=A2)/(TIME!$B$2:$B$7=B2),1))*(INDIRECT(ADDRESS(2,4,,,"TIME")&":"&ADDRESS(7,D2+4)))),"")
Chỉ định: Nếu không hiểu công thức thì vui lòng không thay đổi vị trí bất kỳ nội dung gì, chỉ được phép thay đổi giá trị ô

Thanks
Lê Hồng Minh83
đã hỗ trợ, bạn cho mình hỏi thêm nếu trường hợp dò sang sheet time cột Rdraw không có mã thì mình chỉ dò revise lớn nhất rồi lấy giá trị,

Trường hợp này mình nên sử dụng iferror hay thay đổi công thức lại , bạn có thể cho mình xin ý kiến được không, do công thức bạn mình nhìn cũng chưa hiểu được , đoạn ADDRESS(7,D2+4) cũng chưa hiểu tại sao +4 , bạn có thể hướng dẫn sơ qua được không bạn

Mình xin gửi lại file bạn xem qua giúp mình nhé
 

File đính kèm

  • Book1_2 (3)_Max_TH Khac.xlsx
    23.7 KB · Đọc: 5
ADDRESS(7,D2+4) cũng chưa hiểu tại sao +4
Do Sheet TIME nhóm cột bắt đầu cho Step 0,1,2,3... là cột D (cột 4), do đó, bạn đang chọn Step 10 đồng nghĩa Step 10 đó ở cột thứ 14 và phải cộng thêm 4 nữa mới đủ.
Còn trường hợp cột Rdaw không có mã chắc phải điều chỉnh lại công thức, giờ mình có chút việc chưa nghiên cứu cho bạn đc
 
Thử:
Mã:
C2=MOD(MAX(IFERROR(TIME!C$2:C$7/(TIME!A$2:A$7=A2)/((B2="")+(TIME!B$2:B$7=B2))*10^6+TIME!BR$2:BR$7,)),10^6)
Mã:
F2=SUMPRODUCT((TIME!A$2:A$7=A2)*(TIME!BR$2:BR$7=C2)*(VALUE(SUBSTITUTE(TIME!E$1:BQ$1,"Step",""))<=D2)*TIME!E$2:BQ$7)
##
Nếu cột dữ liệu dài có thể dùng cách sau:
Tại sheet TIME tạo cột phụ với công thức như sau:
Mã:
BT2=A2&"#"&B2&"#"&BR2
Lúc đó công thức tại Sheet Cal:
Mã:
F2=SUMPRODUCT(OFFSET(TIME!E$1,MATCH(A2&"#"&IF(B2="","*",B2)&"#"&C2,TIME!BT$2:BT$7,0),,,D2))
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom