ฉันจะรวม VLOOKUP ภายในคำสั่ง IF ที่ดัชนีคอลัมน์ของฟังก์ชัน VLOOKUP เป็นตัวเลขที่ประมาณจากข้อความได้อย่างไร


4

ฉันมีตารางต่อไปนี้ใน Excel:

สต็อกสินค้า

และ

การวิเคราะห์หุ้น.

ตารางสต็อคผลิตภัณฑ์(PST)มีความครอบคลุมมากกว่านี้ แต่สำหรับจุดประสงค์ของคำถามนี้ฉันได้ลดระดับลงแล้ว

ฉันต้องการค้นหาค่าในคอลัมน์ในตารางการวิเคราะห์สต็อค(SAT)ตรงกับค่าในคอลัมน์ขนาดของตารางสต็อกสินค้า

ตัวอย่างเช่นในกรณีนี้ค่าในคอลัมน์ขนาดของตารางสต็อคผลิตภัณฑ์ของฉัน(PST)คือ8ดังนั้นฉันต้องการค้นหาค่าในคอลัมน์ขนาด 8ของตารางวิเคราะห์หุ้นของฉัน ถ้าค่าของฉันได้5แล้วค้นหาขนาด 5ในตาราง Stock วิเคราะห์ของฉัน(SAT)

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

นอกจากนี้ยังมีการใส่สูตรเพื่อให้แน่ใจว่าแถวถัดไปของSATจะมีหมายเลขแบทช์ซึ่งมากกว่าหนึ่งแถวก่อนหน้า (เช่นมีการเพิ่ม 1 ในคอลัมน์ Batch No สำหรับแต่ละแถวใหม่) เพื่อให้แน่ใจว่า ไม่มีการทำซ้ำแบทช์ในSAT

สิ่งที่ฉันมีอยู่คือ:

=IF(PST[Batch No]=SAT[Batch No, VLOOKUP(PST[Batch No], PST, Stuck here, FALSE), "")

สิ่งที่ฉันต้องการcol_index_numคือการจับคู่ค่าในคอลัมน์ขนาดของฉันของPSTของฉันกับอักขระตัวสุดท้ายของสตริงในส่วนหัวของSATยกเว้นส่วนหัว Batch No (ซึ่งอาจไม่ส่งผลกระทบต่อแม้ว่า) เมื่อมีการแข่งขันให้หมายเลขคอลัมน์บนโต๊ะ

สิ่งนี้จะให้ค่าภายใต้คอลัมน์ที่ตรงกับเลขที่แบทช์

ฉันหวังว่ามันจะเข้าใจได้

ฉันไม่ชอบที่จะเจาะลึก VBA


ไม่แน่ใจว่าฉันเข้าใจอย่างถ่องแท้ คุณยังไม่ได้ติดป้ายกำกับตารางของคุณฉันคิดว่าอันดับแรกคือ PST ของคุณและอันดับที่สองคือ SAT ของคุณ นอกจากนี้คุณคาดหวังผลลัพธ์อะไร คุณพูดถึงคอลัมน์ขนาดของ PST ของคุณคือ 8 ผลลัพธ์จะมาจากตาราง SAT ของคุณอย่างไร ฉันถือว่า 7?
Kevin Anthony Oppegaard Rose

1
ใช่ฉันขอโทษ แต่เมื่อฉันพิมพ์คำถามดูเหมือนว่าตารางนั้นมีป้ายกำกับ อย่างไรก็ตามฉันพยายามอธิบายเพิ่มเติม @ g.kov ดูเหมือนจะมีการแก้ไขปัญหาของฉัน
MrMarho

คำตอบ:


10

อะไรแบบนี้?

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

สูตรในH12คือ:

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)

แก้ไข:สูตรH12ทำงานอย่างไร

ส่วนที่ให้หมายเลขคอลัมน์

MATCH("Size "&F12,$C$5:$H$5,0)

ครั้งแรกที่เชื่อมคำนำหน้า"Size " ด้วยค่าของF12(= 8) "Size 8"ส่งผลสตริง จากนั้นจะตรวจสอบเซลล์ต่างๆในแถวส่วนหัว$C$5:$H$5 เพื่อค้นหาสตริงคีย์นี้และส่งกลับจำนวนของเซลล์ที่ตรงกันคือ6(เซลล์สุดท้ายในส่วนหัว) จากนั้นนำสูตร

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)

เป็นหลัก

=VLOOKUP(E12,$C$6:$H$8,6,FALSE)

ซึ่งมีลักษณะสำหรับเนื้อหาของE12(= 1) $C$6:$H$8ในคอลัมน์แรกของช่วง ในคำอื่น ๆ ก็เลือกแถวที่สอดคล้องกับซึ่งเป็นBatch No=1 1และได้รับแถว (= 1) และคอลัมน์ (= 6) ตัวเลขในช่วง$C$6:$H$8, VLOOKUPส่งกลับค่าที่เก็บไว้ในซึ่งเป็นH67


ใช่สิ่งที่ฉันกำลังมองหา คุณเพิ่งจบการระดมสมอง 4 ชั่วโมง
MrMarho

ดังนั้นไม่จำเป็นต้องใช้ฟังก์ชั่น IF ของฉันเพราะฉันได้ทำการตรวจสอบความถูกต้องของข้อมูล
MrMarho

2
@MarMarho: มีข้อผิดพลาดอยู่เสมอดังนั้นมันขึ้นอยู่กับคุณว่าจะจัดการกับมันอย่างไร
g.kov

@ fixer1234: เพิ่มแล้ว
g.kov

2

ลองindexฟังก์ชั่นด้วยการจับคู่สำหรับรุ่นที่ # และข้อความขนาด:

=INDEX(C6:H8,MATCH($E12,$C$6:$C$8,0),MATCH("Size "&$F12,$C$5:$H$5,0))

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