ความพยายามที่จะย้ายตารางสองคอลัมน์ใน excel โดยใช้คอลัมน์แรกไปยังค่ากลุ่มในคอลัมน์ที่สอง


1

ฉันมีตารางคอลัมน์สองคอลัมน์ใน Microsoft Excel 2016 ที่แสดงรายการหมวดหมู่ค่าใช้จ่ายในคอลัมน์แรกและจำนวนค่าใช้จ่ายในคอลัมน์ที่สอง หมวดค่าใช้จ่ายไม่ซ้ำกันและจะทำซ้ำหลายครั้ง

ผลลัพธ์ที่ฉันกำลังค้นหาจะมีหมวดหมู่ค่าใช้จ่ายเฉพาะเป็นส่วนหัวคอลัมน์และค่าใช้จ่ายทั้งหมดที่ระบุไว้ภายใต้หมวดหมู่ค่าใช้จ่ายเฉพาะนั้น

ฉันลองทำสิ่งนี้โดยใช้ Excel Query หลังจากสองขั้นตอนเริ่มต้นในแบบสอบถามขั้นตอนแรกของฉันคือแถวกลุ่มตามคอลัมน์ "หมวดหมู่" ที่มีชื่อคอลัมน์ใหม่ตั้งค่าเป็น "CategoryValues" ในกรณีของฉันและการดำเนินการในคอลัมน์นั้นคือ "แถวทั้งหมด" สิ่งนี้สร้างตารางที่มีหมวดหมู่เฉพาะในคอลัมน์แรกและอ้างอิงกับตารางในคอลัมน์ที่สอง ขั้นตอนต่อไปคือย้ายตารางและเลื่อนแถวแรกไปที่ส่วนหัว หลังจากสองขั้นตอนเหล่านี้ฉันมีหมวดหมู่ที่ไม่ซ้ำกันเป็นคอลัมน์ที่มีส่วนหัวที่ถูกต้องและแถวแรกของข้อมูลสำหรับแต่ละคอลัมน์มีการอ้างอิงตารางไปยังตารางอื่นที่คอลัมน์แรกเป็นหมวดหมู่และค่าที่ไม่ซ้ำกันในหมวดนั้นเท่านั้น

ภาพ 1

ต่อไปฉันสามารถคลิกที่การอ้างอิงตารางเดี่ยวซึ่งจะนำฉันไปยังตารางที่กล่าวถึงข้างต้นสำหรับหมวดหมู่ที่เฉพาะเจาะจง มีคอลัมน์แรกที่สามารถลบได้และฉันถูกทิ้งไว้กับคอลัมน์หมวดหมู่เดียวที่มีค่าที่แสดงรายการเป็นแถว

ภาพที่ 2

นี่คือสิ่งที่ฉันพยายามที่จะบรรลุ แต่กับทุกหมวดหมู่

let
    Source = Excel.Workbook(File.Contents("C:\Users\Pancake\Documents\TestQuery.xlsx"), null, true),
    TblExpenses_Table = Source{[Item="TblExpenses",Kind="Table"]}[Data],
    #"Grouped Rows" = Table.Group(TblExpenses_Table, {"Category"}, {{"CategoryValues", each _, type table}}),
    #"Transposed Table" = Table.Transpose(#"Grouped Rows"),
    #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
    #"Adv  Fee" = #"Promoted Headers"{0}[Adv. Fee],
    #"Removed Columns" = Table.RemoveColumns(#"Adv  Fee",{"Category"})
in
    #"Removed Columns"

นี่คือข้อมูลตัวอย่าง

Category    Amount
Toll        3.65
Toll        4.8
Toll        120.35
Toll        10
DEF         23.32
DEF         15
Toll        13.25
Toll        122.35
DEF         8.66
Fax         2
Fax         2
Scale       11
Scale       2
Toll        3.5
Adv. Fee    0.99
Adv. Fee    12.95
Oil         17.98
Fax         2
Fax         5
DEF         30

ฉันไม่ทราบวิธีการทำเช่นนี้กับ Power Query แต่สามารถทำได้ด้วยการเขียนโปรแกรม VBA
Ron Rosenfeld

คำตอบ:


0

ใช้การอ้างอิงที่ดีมากกับ Q ของคุณนี่คือรุ่นของฉัน .. สมมติว่าข้อมูลดังกล่าวอยู่ใน A1: B21

  1. เลือกคอลัมน์ A และคัดลอกไปยังคอลัมน์ไปยัง D (คอลัมน์ว่าง) ใช้ข้อมูล> ลบรายการซ้ำเพื่อรับค่าที่ไม่ซ้ำจากรายการ เราจะได้ใน D1: D7:

D1 ---> Category D2 ---> Toll D3 ---> DEF D4 ---> Fax D5 ---> Scale D6 ---> Adv. Fee D7 ---> Oil

  1. จากนั้นเลือกค่าที่ไม่ซ้ำกันคัดลอก จากนั้นคลิก r บน F1 และเลือก Transpose (มันจะวางข้อมูลคอลัมน์ที่คัดลอกเป็นแถว .. ดังนั้นใน F1: K1 เราจะได้รับ:

F1 ---> Toll G1 ---> DEF H1 ---> Fax I1 ---> Scale J1 ---> Adv. Fee K1 ---> Oil

  1. ใน F2 ใส่นี่แล้วกด Ctrl + Shift + Enter:

=IFERROR(INDEX($B:$B,SMALL(IF($A:$A=F$1,ROW($B:$B)-MIN(ROW($B:$B))+1),$E2)),"")

  1. จากนั้นลากไปจนถึง K9 เสร็จสิ้น

หวังว่ามันจะช่วย .. (:

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