Excel - ค่า pivot ในเซลล์เดียว (เป็นค่าที่คั่นด้วยเครื่องหมายจุลภาค)


11

Excel - ค่า pivot ในเซลล์เดียว (เป็นค่าที่คั่นด้วยเครื่องหมายจุลภาค)

ฉันมีข้อมูลสองคอลัมน์:

Supplier1 | Product1
Supplier1 | Product2
Supplier1 | Product4
Supplier1 | Product7
Supplier2 | Product3
Supplier2 | Product5

ฉันต้องการ 'หมุน' รอบผู้ผลิตและให้รายการผลิตภัณฑ์ในเซลล์เดียวคั่นด้วยเครื่องหมายจุลภาคเช่น

Supplier1 | Product1, Product2, Product4, Product7
Supplier2 | Product3, Product5

มีซัพพลายเออร์ประมาณ 1,000 รายและ 0 <ผลิตภัณฑ์ <= 10

วิธีแก้ปัญหาปัจจุบันของฉันเกี่ยวข้องกับการใช้ตารางเดือยบันทึกเป็น CSV ฯลฯ และยุ่งมาก วิธีการแก้ปัญหาที่ไม่ใช่ VBA จะน่าทึ่ง


คุณต้องการแบบสอบถาม SQL เพื่อทำสิ่งนั้นได้อย่างง่ายดาย คุณสามารถส่งออกไปยังฐานข้อมูลคำอธิบายบางส่วนได้หรือไม่?
Rhys Gibson

คำตอบ:


23

ต่อไปนี้เป็นโซลูชันตารางที่ไม่ใช่ VBA ไม่ใช่เดือยที่ใช้สูตรไม่กี่สูตรเท่านั้น

  1. ก่อนอื่นฉันใช้ "Text-to-Column" เพื่อแยกข้อมูลของคุณที่ตัวคั่น "pipe" (เส้นแนวตั้ง) เป็น 2 คอลัมน์ คอลัมน์ "ซัพพลายเออร์" และคอลัมน์ "ผลิตภัณฑ์" สิ่งเหล่านี้จะอยู่ในคอลัมน์ A และ B ตามลำดับ (ปรากฏในโพสต์ของคุณว่ามีการรวมกันในหนึ่งคอลัมน์ดังนั้นก่อนอื่นคุณต้องแยกกันคุณไม่ต้องทำสิ่งนี้)

  2. ในคอลัมน์ C ซึ่งฉันตั้งชื่อเป็นคอลัมน์ "เรียงต่อกัน" ฉันใช้สูตรนี้เริ่มต้นในเซลล์ C2 และคัดลอกลงมาทั้งหมด: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. ในคอลัมน์ D ซึ่งฉันตั้งชื่อว่า "SupplierChangesAtNextLine?" ฉันใช้สูตรนี้ (เริ่มต้นใน D2 และคัดลอกมาตลอด): = IF (A2 = A3, "", "เปลี่ยน")

  4. ตอนนี้คุณควรจะสามารถกรองในคอลัมน์ D สำหรับค่า "เปลี่ยนแปลง" เท่านั้น

การล่าสัตว์ที่ดี!


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 (หมายถึง C3) ให้ใช้สูตร = IF (A2 = A1, B2 & "," & C1, B2) เริ่มต้นเซลล์ C2 เป็นต้นไปแล้วลากลงมา
  2. ใน C4 (หมายถึงคอลัมน์ 4) ใช้สูตร = IF (A2 = A3, "", "เปลี่ยน") เริ่มต้นเซลล์ D2 เป็นต้นไปแล้วลากลงมา
  3. กรองใหม่ใน C4 (หมายถึง col4) และคุณจะได้รับผลลัพธ์ที่ต้องการ

0

เพิ่มคอลัมน์ C เป็นตัวนับ *: = COUNTIF (A $ 2: A $ 528, A2)
เพิ่ม D เป็นการเพิ่ม * = ถ้า (A2 = A1, D1 + 1, 1)
เพิ่ม E ลงใน concatenate *: = IF (A1 = A2, E1 & "," & B2, B2)
เพิ่ม F เพื่อเก็บ concat ล่าสุดเท่านั้น: = IF (AND (C2 = D2, E4 <> ""), E4, "")
หมายเหตุ
เพิ่มในเซลล์ 2 และดึงลง (หรือดับเบิลคลิก ที่มุมขวา) เพื่อใช้สูตรสำหรับเซลล์ทั้งหมดในคอลัมน์

คัดลอกและวางเป็นค่าในแผ่นงานอื่นเรียงลำดับจากมากไปน้อย F ลบส่วนที่เหลือ


มากเกินไปที่จะทำ ... โซลูชั่นของ F106dart นั้นดูสง่างามกว่า
ihightower
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.