การจัดกลุ่มป้ายผนึกและการเชื่อมค่าข้อความ (เช่นตารางสาระสำคัญ)


22

ฉันมีสเปรดชีตพร้อมข้อมูลดังนี้:

สินค้า | คุณลักษณะ
---------- + ----------
สินค้า A | สีฟ้า
สินค้า B | สีฟ้า
สินค้า C | สีฟ้า
สินค้า A | สีม่วงแดงเข้ม
สินค้า C | สีม่วงแดงเข้ม
สินค้า B | สีเหลือง
สินค้า C | สีเหลือง
สินค้า A | สีดำ
สินค้า B | สีดำ

สิ่งที่ฉันต้องการจัดกลุ่มทุกอย่างตามคอลัมน์ A และให้คอลัมน์ B เป็นรายการค่าคั่นด้วยเครื่องหมายจุลภาคที่ใช้คอลัมน์ A ร่วมกันเช่น:

สินค้า | คุณลักษณะ
---------- + --------------------------
สินค้า A | Cyan, Magenta, สีดำ
สินค้า B | สีฟ้า, สีเหลือง, สีดำ
สินค้า C | Cyan, Magenta, สีเหลือง, สีดำ

น่าเสียดายที่ Pivot Tables รู้วิธีทำงานกับค่าตัวเลขเท่านั้นและที่สำคัญที่สุดคือการนับจำนวนครั้งที่คอลัมน์ A เกิดขึ้น

ฉันสามารถดึงสิ่งนี้ออกได้ในท้ายที่สุดโดยการนำเข้าข้อมูลไปยังฐานข้อมูล MySQL และใช้GROUP_CONCAT(Attribute)ฟังก์ชั่นของ MySQL ในการสืบค้นด้วยGROUP BY Productประโยค แต่หลังจากต่อสู้หัวของฉันบนโต๊ะของฉันซ้ำ ๆ ในขณะที่พยายามหาทางออกของ Excel

สำหรับการอ้างอิงในอนาคตสามารถทำได้ใน Excel ที่ไม่มีมาโครหรือไม่ ไม่ว่ามันจะเป็นหรือไม่อย่างไรเราจะดึงสิ่งนี้ออก?

คำตอบ:


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

สมมติว่าแถว 1: 1 เป็นแถวส่วนหัว

  1. จัดเรียงตามคอลัมน์ A เพื่อจัดกลุ่มตามผลิตภัณฑ์

  2. เตรียมข้อมูลในรูปแบบที่คั่นด้วยเครื่องหมายจุลภาคในคอลัมน์ Cโดยป้อน C2 สูตรต่อไปนี้และคัดลอกลงไปที่ C3: C10

    =IF(A2<>A1, B2, C1 & "," & B2)
    
  3. ระบุแถวที่มีประโยชน์โดยการป้อนลงใน D2 =A2<>A3และคัดลอกลงไปที่ D3: D10

  4. คัดลอกคอลัมน์ C: D แล้ววางแบบพิเศษเป็นค่า ( AltE- S- V- Enter) ตอนนี้คุณจะได้รับ:

    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. ลบแถวที่ไม่มีประโยชน์โดยการกรองFALSEในคอลัมน์ D ด้วยตัวกรองอัตโนมัติแล้วลบแถวเหล่านั้น

  6. เสร็จสิ้น คอลัมน์ A & C คือสิ่งที่คุณต้องการ


1
นั่นคือการใช้จินตนาการของคุณ! ยินดีด้วย!
jorgebg

ในขณะที่ใช้งานได้มีการเปลี่ยนแปลงเวลาตั้งแต่ปี 2012 ลองดูคำตอบใหม่ที่ใช้ Add-in ของ PowerQuery (ซึ่งมีอยู่แล้วภายใน Excel 2016) มันไม่ง่ายกว่านี้อีกแล้ว อาจจะคุยกับคอมพิวเตอร์และขอให้ "จัดกลุ่มข้อมูลของฉัน!" อาจจะในอีก 6 ปี
ripvlan

11

ฉันรู้ว่ามันเป็นโพสต์เก่า แต่ฉันมีความท้าทายในวันนี้ ฉันใช้PowerQuery Add-in จาก Microsoft (หมายเหตุ: สร้างไว้ใน Excel 2016 โดยค่าเริ่มต้น)

  1. เลือกตารางของคุณ
  2. ใต้แท็บ POWER QUERY (หรือ DATA ในปี 2016) ให้เลือก "จากตาราง"
  3. คลิกที่คอลัมน์ "ผลิตภัณฑ์"
  4. ภายใต้แท็บแปลงให้เลือก "จัดกลุ่มตาม"
  5. บนแท็บมุมมองตรวจสอบให้แน่ใจว่าได้เลือก "แถบสูตร" แล้ว
  6. เปลี่ยนสูตร

    จาก:

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

    ถึง:

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

    คลิกที่นี่เพื่อดูภาพขั้นตอนจากด้านบน

ขั้นตอนที่ 6 ใช้ประโยชน์จาก Power Query (M) Formulas เพื่อทำการปรับเปลี่ยนข้อมูลที่ไม่เปิดเผยผ่านการดำเนินการพื้นฐานที่มีให้ใน UI Microsoft มีการอ้างอิงแบบออนไลน์พร้อมใช้งานสำหรับฟังก์ชั่นขั้นสูงทั้งหมดที่มีใน Power Query


ทางออกที่หรูหรามากน่าจะดีที่สุดของทั้งหมด
asdmin

@ แมตโปแลนด์ฉันสงสัยว่าคุณรู้วิธีการลบค่าที่ซ้ำกันตามบรรทัดโดยใช้เคล็ดลับที่ยอดเยี่ยมนี้ไหม
Lana B

ที่ขั้นตอนที่ 1 (หลังจากเลือกตาราง) คุณควรจะสามารถไปที่แท็บ Data ใน ribbon และคลิก "Remove Duplicates"
Matt Poland

มีตัวเลือกอื่นภายใน Power Query หากคุณไม่ต้องการเปลี่ยนตารางดั้งเดิม หลังจากขั้นตอนที่ 2 คุณสามารถกด CTRL ค้างไว้แล้วคลิกทั้งสองคอลัมน์เพื่อให้ทั้งคู่เลือกไว้ จากนั้นคลิกขวาที่คอลัมน์ใดคอลัมน์หนึ่งแล้วเลือก "ลบรายการซ้ำ" จากนั้นไปที่ขั้นตอนที่ 3
แมตต์โปแลนด์

ขอขอบคุณ! นี่คือคำตอบที่ดีที่สุด สำหรับผู้ที่ใช้ Excel 2016 PowerQuery ถูกสร้างขึ้นเพียงกดแท็บ Data จากนั้นกด "จาก Table / Range" ในส่วน "รับและแปลงข้อมูล" Power Query Editor จะเปิดขึ้นกดแท็บมุมมองและเปิดใช้งานแถบสูตร คำแนะนำที่เหลือทำงานตามที่เป็นอยู่
ripvlan

3

ต่อไปนี้เป็นวิธีการสองอย่างที่ไม่ใช่ "มาโคร" ...

  1. ด้วยชุดข้อมูลขนาดเล็กหลังจากจัดเรียงตามผลิตภัณฑ์เป็นครั้งแรก (คล้ายกับ GROUP BY Product) คุณสามารถคัดลอกคอลัมน์ "ผลิตภัณฑ์" ก่อนวางลงที่อื่นแล้วลบรายการที่ซ้ำกัน ถัดไปคัดลอก "แอตทริบิวต์" สำหรับแต่ละผลิตภัณฑ์และ "วางแบบพิเศษ TRANSPOSE" ถัดจากแต่ละผลิตภัณฑ์ จากนั้นเชื่อมต่อเครื่องหมายจุลภาคกับแอตทริบิวต์ที่คุณถ่ายไว้ในคอลัมน์ผลลัพธ์สุดท้าย "คัดลอก / วางพิเศษ / โอนย้าย" ทั้งหมดนี้เป็นที่ยอมรับว่าจะเก่าไปอย่างรวดเร็วหากคุณมีรายการผลิตภัณฑ์ที่ยาว

  2. หากคุณมีข้อมูลจำนวนมากใช้สูตรไม่กี่อย่างที่คุณสามารถนำไปสู่ผลลัพธ์สุดท้ายดังที่แสดงด้านล่าง สูตรใน F2, G2, H2, I2 และ N2 ถูกระบุโดยลูกศรสีน้ำเงิน คัดลอกสิ่งเหล่านั้นลงในแถวด้านล่างตามต้องการ โปรดทราบว่า J2: L2 ใช้สูตรเดียวกับ I2 นอกจากนี้สูตร F2 ยังหมายถึงช่วง "ผลิตภัณฑ์" ที่ตั้งชื่อซึ่งจะครอบคลุมช่วง A: A

ป้อนคำอธิบายรูปภาพที่นี่


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