Theo tôi biết, không có tính năng tích hợp nào có thể phân tích và tóm tắt các thẻ được phân tách bằng dấu phẩy trong Excel. Tất nhiên, bạn có thể tạo giải pháp của riêng mình với các hàm bảng tính và một chút VBA. Đây là một giải pháp nhanh chóng để làm điều này.
Bước 1 : Nhấn Alt+ F11để mở ngăn trình soạn thảo VBA trong Excel. Chèn một mô-đun mới và dán mã này cho một chức năng tùy chỉnh.
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
Hàm này sẽ cho phép bạn tạo các danh sách được phân tách bằng dấu phẩy để tóm tắt dữ liệu thẻ bạn có.
Bước 2 : Trong một bảng tính, nhập vào một ô (H2 trong ví dụ bên dưới) thẻ bạn muốn tìm kiếm. Trong ô bên phải, nhập công thức sau bằng cách nhấn Ctrl+ Shift+ Enter.
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Bằng cách nhấn Ctrl+ Shift+ Enter, bạn đang nhập công thức dưới dạng công thức mảng. Nó sẽ xuất hiện bao quanh bởi {...}
trong thanh công thức. Lưu ý rằng trong công thức $B$2:$B$6
là phạm vi chứa tất cả các thẻ cho các mục được liệt kê trong $A$2:$A$6
.
EDIT:
Nếu bạn không nhớ các trận đấu của mình được liệt kê trong một cột thay vì trong danh sách trong một ô, bạn có thể trả lại kết quả khớp cho các thẻ chỉ bằng các hàm bảng tính.
Trong trường hợp tiêu đề bạn đang ở trong Column A
, các thẻ ở trong Column B
và thẻ bạn đang tìm kiếm là trong H2
, bạn có thể sử dụng sau đây công thức mảng trong I2
và điền xuống như xa như bạn cần:
=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")
Công thức hoạt động bằng cách đầu tiên hình thành một mảng các số dựa trên việc các thẻ trong mỗi hàng có chứa cụm từ tìm kiếm hay không. Nếu một kết quả khớp được tìm thấy, số hàng được lưu trữ trong mảng. Nếu nó không được tìm thấy, 2000000 được lưu trữ trong mảng. Tiếp theo, SMALL(<array>,ROW()-1)
một phần của công thức trả về ROW()-1
giá trị nhỏ nhất từ mảng. Tiếp theo, giá trị này được truyền dưới dạng đối số chỉ mục cho INDEX()
hàm, trong đó giá trị tại chỉ mục đó trong mảng tiêu đề được trả về. Nếu một số lớn hơn số lượng hàng trong mảng tiêu đề được truyền vào INDEX()
làm đối số, lỗi sẽ được trả về. Vì 2000000 được truyền làm đối số khi không tìm thấy kết quả khớp, nên sẽ xảy ra lỗi. Các IFERROR()
chức năng sau đó trả ""
trong trường hợp này.
Điều quan trọng là phải nắm bắt cách ROW()
sử dụng trong công thức này. Nếu bạn muốn hiển thị danh sách kết quả của mình bắt đầu ở một hàng khác, bạn sẽ cần điều chỉnh đối số thứ hai của SMALL()
hàm để nó trả về giá trị nhỏ nhất đầu tiên từ mảng. Ví dụ: nếu danh sách kết quả của bạn bắt đầu ở Hàng 1 thay vì Hàng 2, bạn sẽ sử dụng SMALL(...,ROW())
thay vì SMALL(...,ROW()-1)
.
Ngoài ra, nếu danh sách tiêu đề và thẻ của bạn không bắt đầu ở Hàng 1, bạn cũng sẽ cần điều chỉnh công thức. Đối số thứ hai của IF()
hàm phải được điều chỉnh sao cho khớp trong hàng đầu tiên của dữ liệu của bạn trả về 1. Ví dụ: nếu danh sách các tiêu đề của bạn bắt đầu ở Hàng 2 thay vì Hàng 1, bạn sẽ cần có công thức để đưa IF(...,ROW($A$2:$A$7)-1,...)
vào thay vì IF(...,ROW($A$1:$A$6),...)
.