Excel - bir hücredeki pivot değerleri (virgülle ayrılmış değer olarak)


11

Excel - bir hücredeki pivot değerleri (virgülle ayrılmış değer olarak)

İki veri sütunum var:

Supplier1 | Ürün1
Supplier1 | product2
Supplier1 | product4
Supplier1 | Product7
Supplier2 | product3
Supplier2 | product5

Tedarikçi etrafında 'pivot' etmek ve ürünlerin listesini tek bir hücrede, virgülle ayrılmış olarak vermek istiyorum.

Supplier1 | Ürün1, product2, product4, Product7
Supplier2 | product3, product5

Yaklaşık 1000 tedarikçi var ve 0 <ürün <= 10.

Geçerli geçici çözümüm, pivot tabloları kullanmayı, CSV vb. Kaydetmeyi içeriyor ve çok dağınık. VBA olmayan bir çözüm harika olurdu.


Bunu kolayca yapmak için bir SQL sorgusu gerekir. Bazı açıklamaların bir veritabanına dışa aktarabilir misiniz?
Rhys Gibson

Yanıtlar:


23

İşte VBA olmayan, pivot olmayan, sadece birkaç formül kullanan bir tablo çözümü.

  1. İlk olarak, verilerinizi "boru" sınırlayıcısındaki (dikey çizgi) 2 sütuna bölmek için "Metin-sütun" ı kullandım; bir "Tedarikçi" sütunu ve "Ürün" sütunu. Bunlar sırasıyla A ve B sütunlarına gider. (Gönderinizde bir sütunda birleştirildikleri görülüyor, bu yüzden önce onları ayırıyorum. Bunu yapmak zorunda kalmayacaksınız.)

  2. "Birleştirme" sütunu olarak adlandırdığım C sütununda, bu formülü C2 hücresinden başlayıp sonuna kadar kopyalayarak kullandım: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. D sütununda, "SupplierChangesAtNextLine?" Bu formülü kullandım (D2'den başlayıp sonuna kadar kopyalama): = EĞER (A2 = A3, "", "Değişti")

  4. Artık yalnızca "değiştirilmiş" değerler için D sütununa filtre uygulayabilmeniz gerekir.

İyi avlar!


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. Col3'te (C3 anlamına gelir) C2 hücresini başlayarak = EĞER (A2 = A1, B2 & "," & C1, B2) formülünü kullanın ve aşağı sürükleyin.
  2. C4'te (sütun4 anlamına gelir) D2 hücresini başlayarak formül = IF (A2 = A3, "", "değişti") kullanın ve aşağı sürükleyin.
  3. C4'te yeni filtreleme (col4 anlamına gelir) ve istediğiniz sonucu elde edersiniz.

0

C sütununu sayaç olarak ekleyin *: = COUNTIF (A $ 2: A $ 528, A2)
Artış olarak D ekleyin * = IF (A2 = A1, D1 + 1, 1)
Birleştirmek için E ekleyin *: = IF (A1 = A2, E1 & " "& B2 B2)
sadece son concat tutmaya F ekleyin : = EĞER (vE (C2 = D2, E4 <>" "), E4,"")
Not
hücresinin 2 eklenti ve aşağı çekin (veya çift tıklama sağ köşede) sütundaki tüm hücreler için formül uygulamak

kopyalayıp başka bir sayfada değerler olarak yapıştırın, azalan F'ye göre sıralayın, gerisini silin


yapmak için çok fazla ... F106dart'ın çözümü daha zarif.
ihightower
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.