Cara Memberi Label / Tag Item dalam Lembar Kerja

14

Saya seorang pemula di spreadsheet, jadi saya harap Anda akan memaafkan saya jika saya mengajukan pertanyaan yang sangat jelas.

Apakah mungkin untuk menggunakan tag di Excel / Google Spreadsheet? Saya membuat spreadsheet untuk mencatat semua artikel dan buku yang saya baca. Katakan aku membaca "Aku, Claudius". Saya ingin memberikan tag ini: sejarah, fiksi, biografi, disabilitas, politik, drama. Kemudian, jika saya ingin menampilkan semua artikel / buku yang ditandai dengan "politik", saya mungkin dapat mencari / menampilkan / memutar dengan tag itu.

Mungkin sebaiknya, semua tag harus dalam satu sel dengan setiap kata dipisahkan oleh koma. Jika setiap kata berada dalam selnya sendiri, itu akan membuat tabelnya benar-benar berantakan, saya pikir.

Saya juga terbuka untuk solusi pelabelan lainnya.

Terima kasih!

nusantara
sumber
Saya belum pernah melihat solusi tag di excel, tetapi itu tidak mengatakan tidak ada. Mungkin memeriksa Evernote
Raystafarian

Jawaban:

13

Sejauh yang saya tahu tidak ada fitur bawaan yang dapat mengurai dan meringkas tag yang dipisahkan koma di Excel. Anda tentu saja dapat membuat solusi sendiri dengan fungsi lembar kerja dan sedikit VBA. Inilah solusi cepat untuk melakukan ini.

Langkah 1 : Tekan Alt+ F11untuk membuka panel editor VBA di Excel. Masukkan modul baru dan rekatkan dalam kode ini untuk fungsi khusus.

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

Fungsi ini memungkinkan Anda membuat daftar yang dipisahkan koma untuk meringkas data tag yang Anda miliki.

Langkah 2 : Di lembar kerja, masukkan sel (H2 pada contoh di bawah) tag yang ingin Anda cari. Di sel di sebelah kanan, masukkan rumus berikut dengan menekan Ctrl+ Shift+ Enter.

=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")

Dengan menekan Ctrl+ Shift+ Enter, Anda memasukkan rumus sebagai rumus array. Itu akan muncul dikelilingi oleh {...}di bilah rumus. Perhatikan bahwa dalam rumus $B$2:$B$6adalah rentang yang menyimpan semua tag untuk item yang tercantum dalam $A$2:$A$6.

masukkan deskripsi gambar di sini

EDIT:
Jika Anda tidak keberatan kecocokan Anda dicantumkan dalam kolom alih-alih dalam daftar dalam satu sel, Anda dapat mengembalikan kecocokan untuk tag menggunakan hanya fungsi lembar kerja.

Dimana judul Anda berada di Column A, tag berada dalam Column B, dan tag yang Anda cari adalah H2, Anda dapat menggunakan berikut formula array di I2dan mengisi bawah sejauh yang Anda perlu:

=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)),"")

masukkan deskripsi gambar di sini

Rumus berfungsi dengan terlebih dahulu membentuk array angka berdasarkan pada apakah tag di setiap baris berisi istilah pencarian. Jika kecocokan ditemukan, nomor baris disimpan dalam array. Jika tidak ditemukan, 2000000 disimpan dalam array. Selanjutnya, SMALL(<array>,ROW()-1)bagian dari rumus mengembalikan nilai ROW()-1terkecil dari array. Selanjutnya, nilai ini diteruskan sebagai argumen indeks ke INDEX()fungsi, di mana nilai pada indeks itu dalam array judul dikembalikan. Jika angka lebih besar dari jumlah baris dalam array judul diteruskan INDEX()sebagai argumen, kesalahan dikembalikan. Karena 2000000 dilewatkan sebagai argumen ketika tidak ada kecocokan yang ditemukan, kesalahan dikembalikan. The IFERROR()fungsi kemudian kembali ""dalam kasus ini.

Penting untuk memahami bagaimana ROW()digunakan dalam formula ini. Jika Anda ingin menampilkan daftar hasil Anda yang dimulai pada baris yang berbeda, Anda harus menyesuaikan argumen kedua dari SMALL()fungsi sehingga mengembalikan nilai terkecil pertama dari array. Misalnya, jika daftar hasil Anda dimulai di Baris 1 bukannya Baris 2, Anda akan menggunakannya SMALL(...,ROW())sebagai gantinya SMALL(...,ROW()-1).

Juga, jika daftar judul dan tag Anda tidak dimulai di Baris 1, Anda perlu menyesuaikan formula juga. Argumen kedua dari IF()fungsi harus disesuaikan sehingga kecocokan di baris pertama data Anda mengembalikan 1. Misalnya, jika daftar judul Anda dimulai di Baris 2 dan bukan Baris 1, Anda akan memerlukan rumus untuk dimasukkan IF(...,ROW($A$2:$A$7)-1,...)sebagai gantinya IF(...,ROW($A$1:$A$6),...).

Excellll
sumber
Wow, ini bekerja dengan sempurna! Saya lebih suka di Google Spreadsheet. Tetapi menggunakan JavaScript. Saya akan mencoba dan melakukan hal serupa di sana meskipun saya seorang pemula yang lengkap dan mengucapkan bahasa. Hanya dua pertanyaan lagi: Apa artinya "meringkas" data? Apa yang dilakukan kode Anda pada langkah 1? Saya mengajukan pertanyaan ini khususnya karena saya pikir saya mungkin harus melakukan hal yang sama dengan JavaScript di Google Spreadsheet. Terima kasih banyak atas solusi Anda!
nusantara
Bagus, saya senang itu berguna. Dengan "merangkum", maksud saya hanya membuat daftar judul yang cocok yang dipisahkan koma. VBA diperlukan untuk tujuan ini. Dengan fungsi Excel bawaan, cukup mudah untuk membuat formula array yang dapat memilih tag yang cocok. Namun, itu tidak mungkin untuk mengembalikan hasil ini dalam satu sel tanpa VBA, karena CONCATENATEfungsi di Excel tidak dapat mengambil array sebagai argumen (itu hanya membaca item pertama dari array jika Anda mencobanya). Fungsi VBA dibuat untuk membuat daftar yang dipisahkan koma dari array nilai.
Excellll
Setelah menulis jawaban di atas, saya menyadari bahwa ada cara untuk melakukan hal serupa tanpa VBA. Alih-alih mengembalikan daftar judul yang cocok dalam satu sel, kolom judul yang cocok dapat dikembalikan. Saya dapat mengedit posting saya untuk memasukkan metode ini juga jika Anda tertarik.
Excellll
Itu mungkin tanpa VBA? Itu akan lebih baik, saya pikir. Jika tidak terlalu merepotkan, ya, akan luar biasa jika Anda bisa memasukkan metode yang Anda sebutkan. Akan sangat membantu bagi siapa pun yang mencari topik ini! Terima kasih telah menjelaskan "ringkasan". Saya mencoba penggabungan juga, tapi, ya, tidak bisa menggunakannya seperti yang saya inginkan. Sekarang saya tahu itu tidak bisa berperilaku seperti argumen.
nusantara
Iya itu mungkin. Saya akan mencoba memposting solusi di sini dalam beberapa menit. Maaf atas keterlambatannya!
Excellll
2

Saat melakukan ini secara programatik bekerja dengan baik dalam beberapa kasus saya menemukan pendekatan manual bekerja untuk saya. Menggunakan kolom untuk tag Anda dapat dengan mudah menandai item baris dengan memasukkan 0 ke dalam kolom. Anda kemudian memiliki satu baris dan memasukkan 1s di setiap kolom tag untuk baris itu (Anda dapat mewarnai baris ini). Kemudian ketika Anda mengurutkan berdasarkan salah satu tag, baris 1s (biru) bertindak sebagai pemisah. Antara hasil yang difilter (0s) dan yang lainnya (_).

Ini memiliki beberapa keunggulan. 1. Anda tidak harus mengetik tag setiap kali. 2. Anda dapat dengan mudah melintasi referensi untuk memeriksa apakah Anda memiliki duplikat atau item serupa yang dapat dikurangi menjadi satu.

James Stephen Brown
sumber
1

Ide lain:

Gunakan fungsi filter bawaan. Saring berdasarkan kolom Tag, lalu Anda bisa mencari baris yang berisi tag yang diberikan.

Baris dengan daftar tag: komedi, horor, romansa

akan muncul ketika mencari salah satu dari ketiga tag tersebut.

matt
sumber
1

Pendekatan non-VBA saya adalah mencantumkan tag dalam satu kolom (misalkan kolom H), memisahkan item dengan koma. Dari sana, saya menggunakan kombinasi "Teks ke Kolom" dan "Hapus Duplikat" untuk mendapatkan daftar tag saya. Saya menyalin melewati ini ke baris tajuk lembar utama saya (dalam hal ini, dimulai pada kolom L. Kemudian, di setiap sel di bawah header tag individu, masukkan yang berikut ini:

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

Ini memberikan yang terbaik dari kedua dunia - kolom tag (H) mudah untuk dibaca orang; kolom tag individual (dengan 0 dan 1) mudah dibaca oleh komputer. Ini dinamis jika Anda tetap berada di dalam set tag yang diberikan; jika tidak, Anda perlu menambahkan tag baru ke baris tajuk, lalu salin rumus Anda.

Dari sana, Pivot-Tables adalah teman Anda.

pengguna2024015
sumber
0

Bagi saya tidak jelas bagaimana Anda ingin menggunakan tag. Tetapi di Google Sheets, Anda dapat menggunakan fungsi SPLIT () untuk membagi serangkaian tag (dibatasi oleh spasi, koma, atau apa pun yang Anda inginkan) menjadi beberapa sel lain, dan saya yakin bahkan Excel memiliki fungsi yang dapat mencari sel untuk tag.

Michael Scheper
sumber