Mengelompokkan label dan menggabungkan nilai teks mereka (seperti tabel pivot)

22

Saya punya spreadsheet dengan data seperti ini:

Produk | Atribut
---------- + ----------
Produk A | Cyan
Produk B | Cyan
Produk C | Cyan
Produk A | Magenta
Produk C | Magenta
Produk B | Kuning
Produk C | Kuning
Produk A | Hitam
Produk B | Hitam

Apa yang ingin saya lakukan mengelompokkan semuanya berdasarkan Kolom A dan membuat Kolom B menjadi daftar nilai yang dipisahkan koma yang memiliki persamaan Kolom A, seperti:

Produk | Atribut
---------- + --------------------------
Produk A | Cyan, Magenta, Black
Produk B | Cyan, Kuning, Hitam
Produk C | Cyan, Magenta, Kuning, Hitam

Sayangnya, Pivot Tables hanya tahu cara bekerja dengan nilai-nilai angka, dan yang terjauh ke arah ini adalah menghitung berapa kali Kolom A terjadi.

Saya bisa melakukan ini pada akhirnya dengan mengimpor data ke database MySQL dan menggunakan GROUP_CONCAT(Attribute)fungsi MySQL dalam permintaan dengan GROUP BY Productklausa, tetapi setelah membenturkan kepala saya di meja saya berulang kali saat mencoba mencari solusi Excel.

Untuk referensi di masa mendatang, apakah ini mungkin di Excel tanpa makro? Apakah itu atau tidak, bagaimana orang melakukannya?

p0lar_bear
sumber

Jawaban:

31
   |     A     |     B
---+-----------+-----------
 1 |  PRODUCT  | ATTRIBUTE
 2 | Product A | Cyan
 3 | Product B | Cyan
 4 | Product C | Cyan
 5 | Product A | Magenta
 6 | Product C | Magenta
 7 | Product B | Yellow
 8 | Product C | Yellow
 9 | Product A | Black
10 | Product B | Black

Dengan asumsi baris 1: 1 adalah baris tajuk.

  1. Sortir menurut kolom A untuk dikelompokkan berdasarkan produk

  2. Siapkan data dalam format yang dipisahkan koma di kolom C dengan memasukkan ke C2 rumus berikut dan salin ke C3: C10.

    =IF(A2<>A1, B2, C1 & "," & B2)
    
  3. Identifikasi baris yang bermanfaat dengan masuk ke D2 =A2<>A3dan salin ke D3: D10.

  4. Salin kolom C: D, lalu rekatkan khusus sebagai nilai ( AltE- S- V- Enter). Anda sekarang akan mendapatkan:

    Product A    Cyan       Cyan                   FALSE
    Product A    Magenta    Cyan,Magenta           FALSE
    Product A    Black      Cyan,Magenta,Black     TRUE
    Product B    Cyan       Cyan                   FALSE
    Product B    Yellow     Cyan,Yellow            FALSE
    Product B    Black      Cyan,Yellow,Black      TRUE
    Product C    Cyan       Cyan                   FALSE
    Product C    Magenta    Cyan,Magenta           FALSE
    Product C    Yellow     Cyan,Magenta,Yellow    TRUE
    
  5. Hapus baris yang tidak berguna dengan memfilter FALSEdi kolom D dengan AutoFilter, lalu hapus baris itu.

  6. Selesai . Kolom A & C adalah yang Anda butuhkan.

Wilson
sumber
1
Itu menggunakan imajinasi Anda! Selamat!
jorgebg
Sementara ini berhasil, waktu telah berubah sejak 2012. Lihat di bawah untuk jawaban baru yang menggunakan add-in PowerQuery (yang ada di dalam Excel 2016). Itu tidak bisa lebih mudah. Yah, mungkin berbicara dengan komputer dan menanyakannya ke "kelompokkan data saya!" Mungkin dalam 6 tahun lagi.
ripvlan
11

Saya tahu ini adalah posting lama tapi saya mendapat tantangan ini hari ini. Saya menggunakan add-in PowerQuery dari Microsoft (CATATAN: ini dibangun ke dalam Excel 2016 secara default).

  1. Pilih meja Anda
  2. Di bawah tab POWER QUERY (atau DATA di 2016), pilih "Dari Tabel"
  3. Klik pada kolom "Produk"
  4. di bawah tab Transform, pilih "Group By"
  5. Pada tab Lihat, pastikan "Formula Bar" dicentang
  6. Ubah formula

    DARI:

    = Table.Group(#"Changed Type", {"Product"}, {{"Count", each Table.RowCount(_), type number}})
    

    UNTUK:

    = Table.Group(#"Changed Type", {"Product"}, {{"Attributes", each Text.Combine([Attribute], ", "), type text}})
    

    Klik di sini untuk gambar yang menggambarkan langkah-langkah dari atas

Langkah 6 adalah memanfaatkan Rumus Power Query (M) untuk melakukan manipulasi data yang tidak diekspos melalui operasi dasar yang disediakan di UI. Microsoft memiliki referensi lengkap yang tersedia online untuk semua fungsi lanjutan yang tersedia di Power Query.

Matt Poland
sumber
Solusi yang sangat elegan, mungkin yang terbaik dari semuanya.
asdmin
@matt poland, saya ingin tahu apakah Anda tahu cara juga menghapus nilai duplikat di sepanjang baris menggunakan trik yang cukup mengagumkan ini?
Lana B
Pada LANGKAH 1 (setelah memilih tabel) Anda harus dapat membuka tab Data di pita dan klik "Hapus Duplikat".
Matt Poland
Ada opsi lain dalam Power Query jika Anda tidak ingin mengubah tabel asli Anda. Setelah LANGKAH 2, Anda dapat menahan CTRL dan mengklik kedua kolom sehingga keduanya dipilih. Kemudian Anda klik kanan salah satu kolom dan pilih "Hapus Duplikat". Kemudian lanjutkan ke LANGKAH 3.
Matt Poland
Terima kasih! Ini jawaban terbaik. Bagi mereka yang menggunakan Excel 2016, PowerQuery sudah ada di dalamnya. Cukup tekan tab Data dan kemudian tekan "Dari Tabel / Rentang" di bagian "Dapatkan & Ubah Data". Editor Power Query akan terbuka, tekan tab View dan aktifkan Formula Bar. Instruksi selanjutnya berfungsi sebagaimana mestinya.
ripvlan
3

Berikut adalah beberapa pendekatan, baik "non-makro" ...

  1. Dengan kumpulan data kecil, setelah mengurutkannya berdasarkan produk (mirip dengan GROUP BY Product), Anda dapat menyalin kolom "Produk" terlebih dahulu, menempelkannya di tempat lain, lalu menghapus duplikat. Selanjutnya, salin "Atribut" untuk setiap produk dan "rekatkan khusus, TRANSPOSE" di sebelah masing-masing Produk. Lalu gabungkan tanda koma dengan masing-masing atribut yang ditransfusikan dalam kolom hasil akhir. Harus diakui, semua "salin / tempel khusus / transpose" ini akan cepat menjadi tua jika Anda memiliki daftar panjang Produk.

  2. Jika Anda memiliki banyak data, menggunakan beberapa rumus, Anda dapat bekerja sampai ke hasil akhir, seperti yang ditunjukkan di bawah ini. Rumus dalam F2, G2, H2, I2 dan N2 ditunjukkan oleh panah biru. Salin ke baris di bawah ini sesuai kebutuhan. Perhatikan bahwa J2: L2 menggunakan rumus yang sama dengan I2. Juga, rumus F2 merujuk ke rentang bernama "Produk" yang mencakup rentang A: A.

masukkan deskripsi gambar di sini

F106dart
sumber
Ini adalah solusi yang baik, meskipun hanya jika kumpulan data kecil, seperti yang Anda katakan. Terima kasih!
p0lar_bear