ต่อไปนี้เป็นคำตอบสองข้อที่สอดคล้องกับคำแนะนำของฉันในความคิดเห็นเกี่ยวกับคำถาม สำหรับทั้งสองนี้ฉันสมมติว่า A1: C30 มีข้อมูลจากคำถาม
การใช้ฟังก์ชั่นฐานข้อมูล
โซลูชันแรกใช้ฟังก์ชันฐานข้อมูลของ Excel ฟังก์ชันฐานข้อมูลทั้งหมดถือว่าช่วงของเซลล์เป็นฐานข้อมูลโดยที่แต่ละแถวเป็นเรคคอร์ดและแต่ละคอลัมน์เป็นฟิลด์ แถวแรกมีชื่อคอลัมน์ ฟังก์ชันฐานข้อมูลยังใช้ช่วงเซลล์อีกช่วงหนึ่งเป็นเกณฑ์การค้นหาโดยที่แถวแรกคือชื่อคอลัมน์และแถวที่สองเป็นเกณฑ์จริง ระบุว่าใน E1: F2 (หรือที่ใดก็ได้ แต่นั่นคือสิ่งที่ฉันได้ใส่ไว้สำหรับตัวอย่างเหล่านี้) ใส่:
E F
1 Store # Date
2 414 11/9/15
นั่นคือเกณฑ์ จากนั้นใน E4 (หรือที่ใดก็ตาม) =DGET(A1:C30,"Data",E1:F2)
ใส่ ที่ใช้DGET
ฟังก์ชั่นฐานข้อมูลเพื่อค้นหาค่าของคอลัมน์ที่กำหนดให้ฐานข้อมูล ( A1:C30
), ชื่อคอลัมน์ ( "Data"
) และเกณฑ์ ( E1:F2
) 132
ในกรณีนี้จะส่งผลให้ การเปลี่ยนเนื้อหาของ F2 เป็น11/2/15
จะเปลี่ยนDGET
ค่าเป็น55
ฯลฯ
นี่อาจเป็นวิธีที่สะอาดที่สุดเนื่องจากสามารถขยายได้ง่ายถ้าคุณมีคอลัมน์เพิ่มเติมในข้อมูลและเกณฑ์ที่คุณต้องการใช้เพื่อให้ตรงกับคอลัมน์เหล่านั้น คุณสามารถนำบางส่วนของเกณฑ์มาใช้เพื่อทำอย่างอื่นได้ ตัวอย่างเช่น=DSUM(A1:C30,"Data",E1:E2)
จะรวมค่าข้อมูลทั้งหมดสำหรับร้านค้า 414 =DSUM(A1:C30,"Data",F1:F2)
จะสรุปค่าข้อมูลทั้งหมดสำหรับ 11/9/15 เป็นต้นนอกจากนี้ยังไม่ถือว่าสิ่งใดเกี่ยวกับลำดับคอลัมน์ที่เรียงลำดับข้อเสียคือถ้าคุณ อย่าใช้ฟังก์ชั่นฐานข้อมูลเป็นจำนวนมาก (เช่นฉัน :-)) คุณจะต้องอ่านความช่วยเหลือเกี่ยวกับพวกเขาทุกครั้งที่คุณใช้งาน (เช่นเดียวกับที่ฉันทำเพื่อ :-) นี้ดังนั้นจึงอาจไม่เป็นเช่นนั้น การบำรุงรักษา
การใช้การจัดทำดัชนีและสูตรการค้นหา
วิธีที่สองเป็นการรวมสูตรการค้นหาของ Excel เข้าด้วยกัน
ตั้งค่าแผ่นงานเหมือนข้างบนข้อมูลจากคำถามใน A1: C30 และเกณฑ์ใน E1: F2 โปรดทราบว่าในกรณีนี้เราจะใช้ E2 และ F2 เท่านั้น แต่คุณสามารถปล่อยให้ E1 และ F1 เป็นป้ายกำกับว่ามีอะไรใน E2: F2
จากนั้นใน E4 ให้ใส่:
=VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)
ทำลายมันจากภายในสู่ภายนอก:
MATCH(E2,A:A,0)
ที่พบการแข่งขันครั้งแรก (คน0
) ในคอลัมน์แรก ( A:A
) E2
ที่ตรงกับการจัดเก็บใน ส่งคืนตำแหน่งสัมพัทธ์และในกรณีนี้เนื่องจากคอลัมน์แรกทั้งหมดคืออาร์เรย์การค้นหาตำแหน่งจะเป็นหมายเลขแถวของการเกิดขึ้นครั้งแรกของ store # ใน E2 7
กับข้อมูลตัวอย่างเช่นถ้าคุณใส่ในมือถือด้วยตัวเองก็จะมีค่า
INDEX(B:B,MATCH(E2,A:A,0),1)
นี้จะสร้างการอ้างอิงไปยังเซลล์ในคอลัมน์ที่สอง ( B:B
) ที่แถวที่กำหนดโดยและคอลัมน์MATCH
1
หากคุณใส่ในมือถือด้วยตัวเองค่าจะเป็นค่าของเซลล์ที่อ้างอิงซึ่งมีตัวอย่างจะมีค่าจาก B7 11/10/14
หรือ
MATCH(E2,A:A,1)
สิ่งนี้จะพบการแข่งขันครั้งสุดท้าย ( 1
) ในคอลัมน์แรกที่ตรงกับร้านค้า # 25
ถ้าใส่ในเซลล์ด้วยตัวเองค่าที่จะได้รับ
INDEX(C:C,MATCH(E2,A:A,1),1)
นี้สร้างการอ้างอิงไปยังเซลล์ในคอลัมน์ที่สาม ( C:C
) ที่แถวที่กำหนดโดยและคอลัมน์MATCH
1
หากคุณใส่ในมือถือด้วยตัวเองค่าจะเป็นค่าของเซลล์ที่อ้างอิงซึ่งมีตัวอย่างจะมีค่าจาก C25 132
หรือ
INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1)
รวมสองINDEX
สูตรนี้เพื่อสร้างการอ้างอิงเพื่อค้นหาวันที่ ด้วยข้อมูลตัวอย่างมันจะเป็น B7: C25 (ถ้าคุณใส่ไว้ในเซลล์ด้วยตัวเองคุณจะได้รับ#VALUE!
เพราะมันให้ผลลัพธ์มากกว่าหนึ่งค่าถ้าคุณใส่ไว้ในเซลล์ด้วยตัวเองเป็นสูตรอาร์เรย์ คุณจะได้รับค่าของเซลล์มุมบนซ้ายหรือ11/10/14
)
=VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)
นี้รวมมันทั้งหมด มันใช้VLOOKUP
เพื่อค้นหาวันที่จากF2
ในช่วงเซลล์ที่สร้างขึ้นโดยสองINDEX
สูตร (B7: C25) และเพื่อกลับคอลัมน์ที่สอง (สุดท้าย2
) บนแถวที่ตรงกัน
Voila!