{ = IFERROR ( INDEX ( tên , NHỎ ( NẾU ( nhóm = $ E5 , ROW ( tên ) - MIN ( ROW ( tên )) + 1 ), COLUMNS ( $ E $ 5: E5 ))), "" ) }
Đây là công thức mảng và phải được nhập bằng Control + Shift + Enter.
Sau khi bạn nhập công thức vào ô đầu tiên, hãy kéo nó xuống và ngang qua để điền vào các ô khác.
Cách thức hoạt động của công thức này
Lưu ý: công thức này sử dụng hai dải ô được đặt tên : "tên" đề cập đến C4: C11 và "nhóm" đề cập đến B4: B11. Những tên này được xác định trong ảnh chụp màn hình ở trên là tốt.
Ý chính của công thức này là: chúng ta đang sử dụng hàm SMALL để tạo ra một số hàng tương ứng với một "kết hợp thứ n". Khi chúng ta có số hàng, chúng ta chỉ cần chuyển nó vào hàm hàm INDEX, trả về giá trị tại hàng đó.
Bí quyết là SMALL đang làm việc với một mảng được tạo động bởi IF trong bit này:
NẾU ( nhóm = $ E5 , ROW ( tên ) - MIN ( ROW ( tên )) + 1 )
Đoạn mã này kiểm tra phạm vi "tên" được đặt tên cho giá trị trong E5. Nếu tìm thấy, nó trả về một số hàng từ một dãy các số hàng tương đối được tạo ra với:
ROW ( tên ) - MIN ( ROW ( tên )) + 1
Kết quả cuối cùng là một mảng chứa các số có khớp, và FALSE không có:
{1; FALSE; FALSE; FALSE; FALSE; 6; FALSE}
Mảng này đi vào SMALL. Giá trị k cho SMALL (nth) xuất phát từ một phạm vi mở rộng :
COLUMNS ( $ E $ 5: E5 )
Khi được sao chép trên bảng kết quả, phạm vi mở rộng, làm cho k (nth) tăng lên. Hàm SMALL trả về mỗi số hàng phù hợp, được cung cấp cho hàm INDEX như row_num, với phạm vi được đặt tên là "tên" làm mảng.
Xử lý lỗi
Khi COLUMNS trả về một giá trị cho k không tồn tại, SMALL sẽ gửi lỗi #NUM. Điều này xảy ra sau khi tất cả các trận đấu đã xảy ra. Để ngăn chặn lỗi, chúng tôi sử dụng IFERROR để bắt lỗi và trả về một chuỗi rỗng ("").