Excel - nilai pivot dalam satu sel (sebagai nilai yang dipisahkan koma)

11

Excel - nilai pivot dalam satu sel (sebagai nilai yang dipisahkan koma)

Saya memiliki dua kolom data:

Pemasok1 | Produk1
Pemasok1 | Produk2
Pemasok1 | Produk4
Pemasok1 | Produk7
Pemasok2 | Produk3
Pemasok2 | Produk5

Saya ingin 'berputar' di sekitar Pemasok, dan memberikan daftar produk dalam satu sel tunggal, mis. Yang dipisahkan koma

Pemasok1 | Produk1, Produk2, Produk4, Produk7
Pemasok2 | Produk3, Produk5

Ada sekitar 1000 pemasok, dan 0 <produk <= 10.

Solusi saya saat ini melibatkan menggunakan tabel pivot, menyimpan sebagai CSV dll dan sangat berantakan. Solusi non-VBA akan luar biasa.

Chris
sumber
Anda memerlukan kueri SQL untuk melakukannya dengan mudah. Bisakah Anda mengekspor ke database dengan beberapa deskripsi?
Rhys Gibson

Jawaban:

23

Berikut adalah solusi tabel non-VBA, non-pivot yang hanya menggunakan beberapa rumus.

  1. Pertama, saya menggunakan "Teks-ke-kolom" untuk membagi data Anda pada pembatas "pipa" (garis vertikal) menjadi 2 kolom; kolom "Pemasok" dan kolom "Produk". Mereka pergi di kolom A dan B, masing-masing. (Tampaknya di pos Anda bahwa mereka digabungkan dalam satu kolom, jadi saya pertama-tama memisahnya. Anda tidak perlu melakukan ini.)

  2. Di kolom C, yang saya namakan sebagai kolom "Concatenation", saya menggunakan rumus ini, mulai dari sel C2 dan menyalin semuanya: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. Di kolom D, yang saya beri nama "SupplierChangesAtNextLine?" Saya menggunakan rumus ini (dimulai pada D2 dan menyalin sepenuhnya): = IF (A2 = A3, "", "Changed")

  4. Anda sekarang dapat memfilter pada kolom D hanya untuk nilai "yang diubah".

Perburuan yang bagus!

F106dart
sumber
1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. Dalam col3 (berarti C3) gunakan rumus = IF (A2 = A1, B2 & "," & C1, B2) mulai sel C2 ke depan dan seret ke bawah.
  2. dalam C4 (berarti kolom4) gunakan rumus = IF (A2 = A3, "", "berubah") mulai sel D2 dan seterusnya dan seret ke bawah.
  3. Saring pada Baru di C4 (berarti col4) dan Anda akan mendapatkan hasil yang Anda inginkan.
Arghya Tarafdar
sumber
0

Tambahkan kolom C sebagai penghitung *: = COUNTIF (A $ 2: A $ 528, A2)
Tambahkan D sebagai selisih * = JIKA (A2 = A1, D1 + 1, 1)
Tambahkan E ke gabungkan *: = IF (A1 = A2, E1 & "," & B2, B2)
Tambahkan F untuk menjaga hanya concat terakhir : = JIKA (DAN (C2 = D2, E4 <> ""), E4, "")
Catatan
tambahkan pada sel 2 dan tarik ke bawah (atau klik dua kali di sudut kanan) untuk menerapkan rumus untuk semua sel di kolom

salin dan tempel sebagai nilai di lembar lain, urutkan menurun dengan F, hapus sisanya

Conete_Cristian
sumber
terlalu banyak yang harus dilakukan ... Solusi F106art lebih elegan.
ihightower