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$6
adalah rentang yang menyimpan semua tag untuk item yang tercantum dalam $A$2:$A$6
.
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 I2
dan 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)),"")
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()-1
terkecil 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),...)
.