สวัสดีครับ
หากให้ผมแนะนำ สูตรก็แทบจะเหมือนกันครับคือ ลองคีย์ที่ A2 ว่า
=IFERROR(
IF(INDEX(
'raw data'!$A$2:$G$12,ROWS(A$2:A2),MATCH(A$1,'raw data'!$A$1:$G$1,0))=""
,"-"
,INDEX('raw data'!$A$2:$G$12,ROWS(A$2:A2),MATCH(A$1,'raw data'!$A$1:$G$1,0))
),"-")
Enter --> คัดลอกไปทางขวาและลงล่าง
จากนั้น เปลี่ยนสูตรใน C2 เป็น
=IFERROR(IF(INDEX(
'raw data'!$A$2:$G$12,ROWS(C$2:C2),MATCH(C$1,'raw data'!$A$1:$G$1,0))="","-",INDEX({"save","flex","fast"},MATCH(LEFT(INDEX(
'raw data'!$A$2:$G$12,ROWS(C$2:C2),MATCH(C$1,'raw data'!$A$1:$G$1,0)),2),{"AS","AX","AF"},0))),"-")
Enter --> แล้วคัดลอกลงล่างครับ
อาจมีวิธีที่ใช้สูตรรวบรัดกว่านี้ รอคำตอบจากอาจารย์หรือเพื่อนๆ ท่านอื่นครับ
การใช้สูตรก็อาจมีสูตรสั้น ยาวบ้าง ขึ้นอยู่กับความยากง่ายของโจทย์ครับ อย่างโจทย์ของคุณคือต้องการสูตรที่ยืดหยุ่น โดยให้มองหาข้อมูลต้นทางที่มีการจัดเรียงคอลัมน์ไม่เหมือนกับปลายทาง แค่เรื่องนี้ก็จำเป็นต้องใช้สูตรหลายสูตรมาผสมกันแล้วครับ ผมว่าที่คนเก่าเขาทำไว้ก็ดีแล้วครับ
ปล. หากลองดูอีกครั้ง สูตรดังกล่าวก็ไม่ซับซ้อนเท่าไรครับ เพราะคนเก่าเขาใช้ IF มาช่วยตรวจสอบค่าว่าง
ถ้ามองหาแล้วพบ 0 ก็ให้แทนที่ด้วย "-" แต่ถ้าไม่ใช่ก็ให้ใส่ค่าที่พบ
การซ้ำ Index(...,Rows...,Match(...,...,0)) 2 รอบก็เพื่อใช้ตรวจสอบเงื่อนไขในครั้งแรก ส่วนครั้งที่สองก็เพื่อให้แสดงค่านั้นกรณี If ตรวจแล้วเป็น Fasle ครับ
เวลานำไปใช้จริง ก็ปรับช่วง
สีน้ำเงินให้สอดคล้องกับข้อมูลต้นทางครับ