Cách gắn nhãn / gắn thẻ các mục trong bảng tính


14

Tôi là người mới làm việc tại bảng tính, vì vậy tôi hy vọng bạn sẽ tha thứ cho tôi nếu tôi hỏi một câu hỏi siêu rõ ràng.

Có thể sử dụng thẻ trong Bảng tính Excel / Google không? Tôi đang tạo một bảng tính để ghi nhật ký tất cả các bài báo và sách tôi đang đọc. Nói rằng tôi đang đọc "Tôi, Claudius". Tôi muốn cho nó những thẻ này: lịch sử, tiểu thuyết, tiểu sử, khuyết tật, chính trị, kịch. Sau đó, nếu tôi muốn hiển thị tất cả các bài viết / sách được gắn thẻ "chính trị", tôi có thể tìm kiếm / hiển thị / trục với thẻ đó.

Có lẽ tốt hơn là, tất cả các thẻ phải nằm trong một ô với mỗi từ được phân tách bằng dấu phẩy. Nếu mỗi từ nằm trong một ô của riêng nó, nó sẽ làm cho bảng thực sự lộn xộn, tôi nghĩ vậy.

Tôi cũng mở cho các giải pháp ghi nhãn khác.

Cảm ơn!


Tôi chưa bao giờ thấy một giải pháp thẻ trong excel, nhưng điều đó không nói rằng không có giải pháp nào. Có lẽ kiểm tra Evernote
Raystafarian

Câu trả lời:


13

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$6là 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.

nhập mô tả hình ảnh ở đây

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 Bvà 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 I2và đ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)),"")

nhập mô tả hình ảnh ở đây

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()-1giá 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),...).


Wow, điều này hoạt động hoàn hảo! Tôi thích nó trên Bảng tính Google, mặc dù. Nhưng nó sử dụng JavaScript. Tôi sẽ thử và làm một cái gì đó tương tự ở đó mặc dù tôi là người mới bắt đầu hoàn toàn và hoàn toàn với ngôn ngữ. Chỉ còn hai câu hỏi nữa: "tóm tắt" dữ liệu nghĩa là gì? Mã của bạn trong bước 1 làm gì? Tôi đang hỏi câu hỏi này đặc biệt bởi vì tôi nghĩ rằng tôi có thể phải làm tương tự với JavaScript trong Bảng tính Google. Cảm ơn rất nhiều cho giải pháp của bạn!
nusantara

Tuyệt, tôi rất vui vì nó được sử dụng. Bằng cách "tóm tắt", tôi chỉ có nghĩa là tạo một danh sách các tiêu đề phù hợp được phân tách bằng dấu phẩy. VBA là cần thiết cho mục đích này. Với các hàm Excel tích hợp, việc tạo ra một công thức mảng có thể chọn ra các thẻ phù hợp khá đơn giản. Tuy nhiên, không thể trả về các kết quả này trong một ô mà không có VBA, vì CONCATENATEhàm trong Excel không thể lấy một mảng làm đối số (nó chỉ đọc mục đầu tiên từ mảng nếu bạn thử). Hàm VBA được tạo để tạo các danh sách được phân tách bằng dấu phẩy từ một mảng các giá trị.
Xuất sắc

Sau khi viết phản hồi trên, tôi nhận ra rằng có một cách để làm điều gì đó tương tự mà không cần VBA. Thay vì trả về danh sách các tiêu đề phù hợp trong một ô, một cột các tiêu đề phù hợp có thể được trả về. Tôi có thể chỉnh sửa bài đăng của mình để bao gồm phương pháp này nếu bạn quan tâm.
Xuất sắc

Có thể không có VBA? Điều đó sẽ tốt hơn, tôi nghĩ. Nếu nó không quá bất tiện, vâng, sẽ thật tuyệt vời nếu bạn có thể bao gồm phương pháp bạn đã đề cập. Nó sẽ rất hữu ích cho bất cứ ai tìm kiếm chủ đề này! Cảm ơn đã giải thích "tóm tắt". Tôi cũng đã thử ghép nối nhưng, vâng, không thể sử dụng nó theo cách tôi muốn. Bây giờ tôi biết nó không thể hành xử như một cuộc tranh cãi.
nusantara

Vâng nó có thể. Tôi sẽ cố gắng đăng giải pháp ở đây trong vài phút nữa. Xin lỗi về sự chậm trễ!
Xuất sắc

2

Trong khi thực hiện chương trình này hoạt động tốt trong một số trường hợp, tôi thấy một cách tiếp cận thủ công có hiệu quả với tôi. Sử dụng các cột cho các thẻ bạn có thể dễ dàng gắn thẻ một mục hàng bằng cách nhập 0 vào cột. Sau đó, bạn có một hàng và nhập 1s vào mỗi cột thẻ cho hàng đó (bạn có thể tô màu hàng này). Sau đó, khi bạn sắp xếp theo một trong các thẻ, hàng 1s (màu xanh) đóng vai trò là dấu phân cách. Giữa kết quả được lọc của bạn (0 giây) và mọi thứ khác (_).

Điều này có một vài lợi thế. 1. Bạn không phải gõ thẻ của bạn mỗi lần. 2. Bạn có thể dễ dàng tham chiếu chéo để kiểm tra xem bạn có các mục trùng lặp hoặc tương tự có thể được giảm xuống thành một.


1

Một ý tưởng khác:

Sử dụng chức năng lọc sẵn có. Lọc theo cột Thẻ, sau đó bạn có thể tìm kiếm các hàng có chứa một thẻ đã cho.

Một hàng với danh sách thẻ: hài, kinh dị, lãng mạn

sẽ hiển thị khi tìm kiếm bất kỳ thẻ nào trong ba thẻ đó.


1

Cách tiếp cận không phải VBA của tôi là liệt kê các thẻ trong một cột (giả sử cột H), phân tách các mục bằng dấu phẩy. Từ đó, tôi sử dụng kết hợp "Chuyển văn bản thành cột" và "Xóa bản sao" để lấy danh sách thẻ của mình. Tôi sao chép qua mục này vào hàng tiêu đề của trang chính của mình (trong trường hợp này, bắt đầu ở cột L. Sau đó, trong mỗi ô bên dưới các tiêu đề thẻ riêng lẻ, hãy nhập như sau:

=IF((ISNUMBER(SEARCH(L$1,$H2)))=TRUE,1,0)

Điều này mang lại điều tốt nhất cho cả hai thế giới - cột thẻ (H) dễ dàng cho mọi người đọc; các cột thẻ riêng lẻ (có 0 và 1) dễ dàng cho máy tính đọc. Nó động nếu bạn vẫn nằm trong bộ thẻ đã cho; nếu không, bạn cần thêm thẻ mới vào hàng tiêu đề, sau đó sao chép công thức của bạn qua.

Từ đó, Pivot-Bàn là bạn của bạn.


0

Tôi không rõ chính xác cách bạn muốn sử dụng các thẻ. Nhưng trong Google Sheets, bạn có thể sử dụng hàm SPLIT () để phân tách một chuỗi các thẻ (được phân cách bằng dấu cách, dấu phẩy hoặc bất cứ thứ gì bạn muốn) vào một số ô khác và tôi chắc chắn ngay cả Excel cũng có chức năng có thể tìm kiếm ô cho một thẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.