SO SÁNH CÓ ĐIỀU KIỆN

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

thaiquy7

Thành viên chính thức
Tham gia
27/4/09
Bài viết
51
Được thích
7
Giới tính
Nam
Nghề nghiệp
Công chức
Tôi có 1 file Excel cần so sánh để cho ra kết quả đúng và chưa đúng. Mong anh em giúp đỡ nhé
 

File đính kèm

  • Book2.xlsx
    14.5 KB · Đọc: 24
T5:
Mã:
=SUMPRODUCT((D5:P5+E5:Q5+F5:R5=$C5)*($D$4:$P$4="Tốt"))=5
ra TRUE/FALSE
hoặc
Mã:
=IF(SUMPRODUCT((D5:P5+E5:Q5+F5:R5=$C5)*($D$4:$P$4="Tốt"))=5,"Đúng", "Chưa đúng")
ra Đúng, Chưa đúng
 
Lần chỉnh sửa cuối:
Tôi có 1 file Excel cần so sánh để cho ra kết quả đúng và chưa đúng. Mong anh em giúp đỡ nhé
Mã:
S5 =IF(AND(SUMIF(OFFSET(C5,,{1,4,7,10,13},,3),">0")=C5),"Đúng","Chưa đúng")
Copy xuống
Lấy cột TSHS nhân 5, so sánh với SUM 15 cột còn lại.

@thớt: tiêu đề viết hoa đọc mỏi mắt quá. Dùng chữ thường như mọi ngưới khác không được sao?
Có khả năng TSHS * 5 = SUM 15 cột còn lại, nhưng tổng từng 3 cột lại khác TSHS
 
Lần chỉnh sửa cuối:
tổng từng 2 cột lại khác TSHS
Em nghĩ ý của thớt chắc là vầy, anh xem đúng không nha!

Có 5 mục đánh giá: "yêu nước, thương nòi ..v.v", mỗi mục phân 3 cột thể hiện số lượng học sinh xếp trong 3 cột: "Tốt, Đạt, Cần cố gắng" theo từng khối lớp. Nếu mục đánh giá của khối lớp bất kỳ nào có tổng 3 cột của mục đó khác TSHS theo từng khối thì "la làng" lên "Ôi! Hổng đúng rồi!"

Hy vọng, bói đúng.
Chúc anh ngày vui tươi khỏe khoắn.
/-*+//-*+//-*+/
 
Em nghĩ ý của thớt chắc là vầy, anh xem đúng không nha!

Có 5 mục đánh giá: "yêu nước, thương nòi ..v.v", mỗi mục phân 3 cột thể hiện số lượng học sinh xếp trong 3 cột: "Tốt, Đạt, Cần cố gắng" theo từng khối lớp. Nếu mục đánh giá của khối lớp bất kỳ nào có tổng 3 cột của mục đó khác TSHS theo từng khối thì "la làng" lên "Ôi! Hổng đúng rồi!"

Hy vọng, bói đúng.
Chúc anh ngày vui tươi khỏe khoắn.
/-*+//-*+//-*+/
Đúng rùi, mục đích của thớt là kiểm tra số liệu đánh giá từng tiêu chí có khớp với số học sinh không, cần phải xét riêng từng tiêu chí, cộng cả 5 tiêu chí lại chưa ổn
 
Đúng rùi, mục đích của thớt là kiểm tra số liệu đánh giá từng tiêu chí có khớp với số học sinh không, cần phải xét riêng từng tiêu chí, cộng cả 5 tiêu chí lại chưa ổn
Ui! Em thấy trong file thớt ghi:
"Viết công thức để cột so sánh dò các mục: yêu nước, nhân ái, chăm chỉ, trung thực, trách nhiệm đều bằng 222 cho ra "Đúng". Nếu có 1 trong các mục không bằng 222 thì cho ra "Chưa đúng". Bảng trên Lớp 1, 3, 4 cho ra "Đúng". Lớp 2 mục chăm chỉ tổng không bằng 179 cho ra "Chưa đúng" "

Cứ tưởng lấy sum 2 cột "tốt+đạt" theo mỗi mục của lớp 1 thì: yêu nước (222) + nhân ái (222) + chăm chỉ (222) + trung thực (222) + trách nhiệm (222) = (222)*5 thì "Đúng"

Còn lớp 2: yêu nước (179) + nhân ái (179) + chăm chỉ (178) + trung thực (179) + trách nhiệm (179) < (179)*5 thì "Chưa đúng"

Ôi, em lẫn lộn với câu cú của thớt rồi! Còn tính dùng: =MIN(IF(D$4: P$4="tốt",D5: P5 + E5:Q5 + F5:R5 ,""))=C5 nữa chứ!

/-*+//-*+//-*+/
 
Có khả năng TSHS * 5 = SUM 15 cột còn lại, nhưng tổng từng 3 cột lại khác TSHS
Quả thật vậy. Dân chuyên thống kê mà bị lỗi này thật đáng xấu hổ.
(quên mất lý thuyết tại sao có từ "phương sai/variant")

Dùng con toán phương sai tính cũng được. Nhưng sumproduct/countif/sumif gọn hơn.
 
Tôi thử dùng Lambda với đệ quy giải bài này. Nhưng mệt quá, và tối mắt kèm nhèm (lấy cớ), làm chưa ra.
Nhưng sẵn làm thì đưa công thức Lambda lên chơi.

=IF(OR(MAP({1,4,7,10,13},LAMBDA(cell,SUM(INDEX($D5:$R5,,cell):INDEX($D5:$R5,,cell+2))<>$C5))), "Sai", "Đúng")

Công thức trên phải chạy đủ 5 nhóm cột. Chưa tìm ra cách ngưng chạy khi một nhóm trả về "Sai": lý do dùng đệ quy.
 
Cuối cùng thì mấy ly cà phê (quên mất bao nhiêu) cũng giúp được:

Đặt một name tên là MeLambda
=LAMBDA(x,pc,[i], if(i>4, 0, if(SUM(TAKE(pc,,3))<>x, 1, MeLambda(x,drop(pc,,3),i+1))))

Cách dùng:
=IF(Melambda($C5, $D5:$R5), "Chưa đúng", "Đúng")
(i là optional, mặc định là 0)

Chú giải:
Hàm đệ quy này chỉ giúp cho thoát sớm khi gặp một nhóm không đúng. Trên thực tế nó không hiệu quả lắm. Hàm đệ quy luôn kém hiệu quả.
 
Lần chỉnh sửa cuối:
Góp vui thêm cách
Mã:
=MAP(ROW(C5:C8)-4,LAMBDA(m,IF(AND(MMULT(WRAPROWS(CHOOSEROWS(D5:R8,m),3),{1;1;1})=INDEX(C5:C8,m)),"Đúng","Chưa đúng")))
View attachment 299805
Anh đang "tiêu hóa" từ từ 365 nè!
Học từ các bài của mấy em và anh @VetMini, tập sử dụng cho quen dần:

Mã:
=IF(AND(MAP({12,9,6,3,0},LAMBDA(m,SUM(TAKE(DROP(D5:R5,,-m),,-3))))=C5),"Đúng","Chưa")

Chúc anh em ngày vui cuối tuần.
/-*+//-*+//-*+/
 
Lần chỉnh sửa cuối:
Sáng ra xem lại cái hàm đệ quy trên. Thực ra tham số i không cần thiết, nó cho biết thứ tự của nhóm, và ta chỉ cần biết cả bọn có đúng hay không, chứ đâu cần biết sai ở nhóm nào.

=Lambda(ts, pc, If(Iferror(Columns(pc),0)<3, 0, If(Sum(Take(pc,,3))<>ts, 1, PCDom(ts, Drop(pc,,3)))))

Hàm (PCDom) tính tổng của một nhóm 3 ô trong bọn "phẩm chất", so sánh với tshs:
- Nếu khác (sai) thì trả về 1.
- Nếu giống thì làm lượt tới với 3 ô kế tiếp.
- Khi hết các nhóm trong bọn "phẩm chất" mà vẫn chưa thấy trả về 1 thì do không có nhóm nào sai, trả về 0.
 
Sáng ra xem lại cái hàm đệ quy trên. Thực ra tham số i không cần thiết, nó cho biết thứ tự của nhóm, và ta chỉ cần biết cả bọn có đúng hay không, chứ đâu cần biết sai ở nhóm nào.

=Lambda(ts, pc, If(Iferror(Columns(pc),0)<3, 0, If(Sum(Take(pc,,3))<>ts, 1, PCDom(ts, Drop(pc,,3)))))

Hàm (PCDom) tính tổng của một nhóm 3 ô trong bọn "phẩm chất", so sánh với tshs:
- Nếu khác (sai) thì trả về 1.
- Nếu giống thì làm lượt tới với 3 ô kế tiếp.
- Khi hết các nhóm trong bọn "phẩm chất" mà vẫn chưa thấy trả về 1 thì do không có nhóm nào sai, trả về 0.
Lần đầu tiên mới thấy anh lập thuật toán "Đệ quy" bằng hàm mới, thật thú vị!
Đã thực hiện theo anh hướng dẫn:
(Biết là trả về trị [0,1] thì tổng quát hơn vì có thể áp dụng cho việc tính toán khác, nhưng xin mạn phép anh cho thay hai giá trị trên bằng chuỗi [Đúng, Chưa đúng] chỉ áp dụng cho bài này thôi!)

1/ Tạo Name PCDom:
=LAMBDA(ts,pc, IF(IFERROR(COLUMNS(pc),0)<3, "Đúng", IF(SUM(TAKE(pc,,3))<>ts, "Chưa đúng", PCDom(ts, DROP(pc,,3)) )))
2/ Công thức ô S5:
Mã:
=PCDom(C5,D5:R5)

Nhìn hàm mà liên tưởng đến "Ouroboros" :)
istockphoto-491486534-612x612.jpg
Cảm ơn anh đã cho một ví dụ áp dụng thuật toán này bằng 'Hàm 365'.
/-*+//-*+//-*+/
 

File đính kèm

  • Ham_DeQuy.xlsx
    17.1 KB · Đọc: 7
Lần chỉnh sửa cuối:
Chủ thớt mồi cái mồi lửa nhỏ xíu mà cháy cả khu rừng rồi, khiếp quá.
 
Chủ thớt mồi cái mồi lửa nhỏ xíu mà cháy cả khu rừng rồi, khiếp quá.
Chả liên quan gì chủ thớt.
Tôi chỉ thấy bài này có liên quan đến vòng lặp cho nên dụ tác giả bài #16 tìm hiểu cách dùng đệ quy.
Thấy bạn ấy hứa sẽ nghiên cứu thêm là tôi mừng cho bạn ấy rồi.
Excel 365 đưa ra một mớ công thức quản trị mảng, mà bạn ấy thì đam mê công thức mảng cho nên tôi ngại bạn ấy quên mất Lambda là một bước rất dài của Excel.
 
Chả liên quan gì chủ thớt.
Tôi chỉ thấy bài này có liên quan đến vòng lặp cho nên dụ tác giả bài #16 tìm hiểu cách dùng đệ quy.
Thấy bạn ấy hứa sẽ nghiên cứu thêm là tôi mừng cho bạn ấy rồi.
Excel 365 đưa ra một mớ công thức quản trị mảng, mà bạn ấy thì đam mê công thức mảng cho nên tôi ngại bạn ấy quên mất Lambda là một bước rất dài của Excel.
Việc gì cũng vậy, bắt đầu từ chính nhờ đóm lửa dù nhỏ nhưng cũng làm cho người ngu muội mở mắt bừng sáng như đốt cháy cả cánh rừng, chiếu rọi đến những nơi u tối.

Chỉ tội cho kẻ mù lòa, ôi!

Anh thật sự "đi guốc" trong lòng em.
Cảm ơn anh.
/-*+//-*+//-*+/
 
Cảm ơn tất cả Anh, Chị và các bạn đã hỗ trợ và giúp mình. Chúc Anh, Chị và các bạn vui, khỏe và hạnh phúc, Chúc mọi người thành công trong mọi lĩnh vực. Trân trọng!
 
Web KT
Back
Top Bottom