จับคู่ส่วนหัวคอลัมน์ (จากตำแหน่งที่ไม่เจาะจง) กับเนื้อหาคอลัมน์และรับส่วนหัวของแถวทั้งหมด


0

ฉันใช้ Excel 2016 บน Windows 8.1

ฉันต้องการให้ตรงกับเกณฑ์สองเกณฑ์โดยที่หนึ่งเกณฑ์เป็นส่วนหัวคอลัมน์และอีกรายการหนึ่งคือเนื้อหาของเซลล์ที่สามารถเกิดขึ้นได้หลายครั้งภายในคอลัมน์นั้นและส่งกลับส่วนหัวของแถวหลายแถวเป็นผลลัพธ์

ในตัวอย่างของฉันฉันต้องการที่จะสามารถป้อนชื่อของผลไม้ (ส่วนหัวคอลัมน์) และคุณภาพ ('ดี' หรือ 'ไม่ดี') ในเซลล์ B6 และ B7 และได้รับลักษณะใด (หัวแถว) ตรงกับผลไม้นั้น และคุณภาพ ถ้าฉันให้ 'แอปเปิ้ล' และ 'ดี' ฉันอยากให้มันกลับมา 'รูปลักษณ์' และ 'รสชาติ' (และไม่ใช่ 'ราคา') ตัวอย่างเช่น

ฉันเคยใช้การจับคู่ดัชนีมาก่อนและฉันเคยได้ยินการใช้สูตรอาร์เรย์เพื่อทำงานกับช่วงของเซลล์ แต่ฉันไม่สามารถหาวิธีรวมทั้งหมดนี้ได้ - โดยเฉพาะอย่างยิ่งเมื่อบทเรียนทั้งหมดที่ฉันพบมีเกี่ยวกับการจับคู่กับส่วนหัวของแถวและส่วนหัวคอลัมน์และค้นหาเซลล์ผลลัพธ์ นอกจากนี้ฉันไม่ต้องการ 'hard-code' อ้างอิงถึงส่วนหัวคอลัมน์ที่กำหนดเพราะฉันอาจไม่ต้องการจับคู่ 'แอปเปิ้ล' เสมอ

ฉันลอง pivot table แล้วและมันก็ไม่ได้สวยงามมาก (ข้อมูลจริงของฉันมี 5 รายการคุณภาพไม่ใช่แค่ 2)

สกรีนช็อตของตารางตัวอย่าง

   A           B         C        D         E        F
1            | Apples | Bananas | Lemons | Mangos | Oranges
-----------------------------------------------------------
2 Appearance | good   | good    | bad    | bad    | good
 ----------------------------------------------------------
3 Flavour    | good   | good    | bad    | good   | good
 ----------------------------------------------------------
4 Price      | bad    | good    | good   | bad    | good
----------------------------------------------------------
5            |        |         |        |        | 
----------------------------------------------------------  
6 Fruit:     | apples |         |        |        |
----------------------------------------------------------
7 Quality:   | good   |         |        |        |             
----------------------------------------------------------
8            |        |         |        |        |     
----------------------------------------------------------  
9 Results:   |        |         |        |        |         
----------------------------------------------------------

หากมีสองคนขึ้นไปคุณต้องการเอาต์พุตอย่างไร ในเซลล์เดียวหรือดีมาก?
Scott Craner

ในหลาย ๆ เซลล์ก็โอเค (อันที่จริงฉันชอบมันมาก)
นีออน Uno

คำตอบ:


0

นี่เป็นรูปแบบที่แตกต่างไปตามสิ่งที่ @Scott Craner เสนอ แต่อาจใช้ได้ผลสำหรับคุณ

เนื้อหาคอลัมน์ไปยังส่วนหัวของแถว

ฉันเพิ่มตัวยึดสำหรับคุณสมบัติเพิ่มเติม วางสูตรนี้ใน B11 แล้วลากลงเพื่อให้จำนวนแถวเท่ากับจำนวนคุณสมบัติที่คุณมี

=IF(INDEX($B2:$F2,,MATCH($B$8,$B$1:$F$1))=$B$9,$A2,"")

หากคุณไม่ชอบรูปลักษณ์ของ Results1 และต้องการให้ค่าอยู่ในเซลล์เดียวให้ใส่สูตรนี้ใน B18 และซ่อนแถวที่ 11 ถึง 15

=IF(B11="","",B11&"//") & IF(B12="","",B12&"//") & IF(B13="","",B13&"//") & IF(B14="","",B14&"//") & IF(B15="","",B15&"//")

ทดแทนสิ่งที่คุณต้องการเป็นตัวคั่นสำหรับ "//"


0

สิ่งนี้จะวนซ้ำผ่านเซลล์และส่งกลับหมายเลขแถวทั้งหมดที่ตรงกับ INDEX ซึ่งจะส่งคืนค่า

ใส่สิ่งนี้ใน B9:

=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$4)/(($B$2:$F$4=$B$7)*($B$1:$F$1=$B$6)),COLUMN(A:A))),"")

และคัดลอกเกินพอที่จะอธิบายลักษณะทั้งหมด

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


ขอบคุณสำหรับคำตอบ. น่าเสียดายที่มันไม่ได้ส่งออกส่วนหัวของแถวที่เกี่ยวข้องทั้งหมด - มันจะส่งออก 'ลักษณะที่ปรากฏ' (ซึ่งถูกต้อง) แต่จะไม่ส่งออก 'รสชาติ' ฉันลองคัดลอกมันข้ามช่องว่าง แต่มันเอาท์พุทเท่านั้นหลังจากนั้น
นีออน Uno

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