การค้นหาแถวก่อนหน้าด้วยค่าที่กำหนด


2

สมมติว่าฉันมีตารางที่มีสามคอลัมน์ (ลำดับสำคัญและไม่สามารถเปลี่ยนแปลงได้) แถวเรียงตาม:

   A                B            C
      date              ID     last_date
10/05/2015        29A06E95     
10/08/2015        E5A884C4
10/12/2015        D24F4975
10/12/2015        D24F4976
10/21/2015        29A06E95

สำหรับแถวใด ๆ หากรหัสยังปรากฏขึ้นในแถวใดก็ได้เหนือกระแสปัจจุบันฉันต้องการเติมคอลัมน์ C ด้วยวันที่ล่าสุด (หรือเนื่องจากแถวเรียงตาม A, ค่าวันที่จากแถวก่อนหน้าด้วยรหัสเดียวกัน ) ตัวอย่างเช่นที่นี่ผลลัพธ์จะเป็นดังนี้:

   A                B            C
      date              ID      prev_date
10/05/2015        29A06E95        <blank>
10/08/2015        E5A884C4        <blank>
10/12/2015        29A06E95     10/05/2015
10/12/2015        D24F4976        <blank>
10/21/2015        29A06E95     10/12/2015

ฉันจะทำสิ่งนี้ได้อย่างไร (ฉันไม่สามารถใช้ MATCH หรือ VLOOKUP ตั้งแต่อดีตพบการแข่งขันนัดแรกและหลังต้องการค่าการค้นหาในคอลัมน์แรก)

นอกจากนี้ฉันได้เห็นวิธีแก้ปัญหาด้วยสูตรอาร์เรย์ แต่สิ่งเหล่านี้ดูเหมือนจะไม่ทำงานภายในบริบทของตารางข้อมูล

คำตอบ:


3

งานนี้เริ่มต้นจาก Excel 2007 เลือกC3และวางสูตรนี้ไว้:

=IFERROR(INDIRECT("A"&MAX(ROW(B$2:B2)*(B$2:B2=B3))),"")

ยืนยันสูตรโดยctrl+ +shiftenter

ลาก (หรือคัดลอก) ลงไปยังตำแหน่งที่ต้องการ


ฉันพูดถึงคำถามของฉันว่าสูตรอาร์เรย์ไม่ทำงานในบริบทตาราง Excel พูดว่า: "ไม่อนุญาตให้ใช้สูตรหลายเซลล์ในตาราง"
Dmitry B.


ทำแบบทดสอบ ทำงานได้อย่างราบรื่นคุณไม่จำเป็นต้องลากมันลง ฉันเพิ่งลบ C2 เนื่องจากไม่สมเหตุสมผล ฉันพลาดอะไรไปรึเปล่า?
SΛLVΘ

เมื่อใดก็ตามที่ฉันพยายามป้อนสูตรอาร์เรย์โดยใช้ ctrl + shift + ป้อนในตารางข้อมูล Excel ปฏิเสธที่จะยอมรับด้วยข้อผิดพลาดต่อไปนี้: "ไม่อนุญาตให้ใช้สูตรอาร์เรย์หลายเซลล์ในตาราง" และใช่ไม่มี VBA (อย่างน้อยยังไม่ได้)
Dmitry B.

ตกลงตอนนี้ฉันเห็นสิ่งที่คุณกำลังทำ คุณกำลังพยายามแทรกสูตรโดยมีช่วงที่เลือกไว้ นั่นไม่ใช่สิ่งที่ฉันเขียน โปรดทำตามคำแนะนำฉันพยายามทำให้ชัดเจนขึ้น
SΛLVΘ

0

คุณไม่สามารถสร้างแผ่นงานที่สองที่มีคอลัมน์และวันที่กลับด้านได้หรือไม่? เพราะการแก้ปัญหานั้นเป็นเรื่องง่าย


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

0

ฉันคิดว่าสิ่งนี้ควรทำ:

=IFERROR(IF(A2=INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0)),"",INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0))),"")

วางสิ่งนี้ลงใน C2 แก้ไขช่วงตามที่จำเป็นแล้วใส่เป็นอาร์เรย์ (พร้อมCTRL+SHIFT+ENTER) แล้วลากลง

แก้ไข: โอเคไม่เป็นไรแน่นอนว่าอาร์เรย์ไม่ทำงานใช่ไหม คุณสามารถอธิบายความหมายของคำว่า "บริบทของตาราง" ได้ไหม สูตรอาเรย์ AFAIK ยังควรใช้กับตารางได้หรือไม่?



@DmitryB - ขอบคุณสำหรับสิ่งนั้น แต่ฉันไม่เห็นว่ามันบอกว่าคุณไม่สามารถใช้อาร์เรย์ได้ อืมฉันจะดูว่าฉันจะได้รับวิธีนี้อีกหรือไม่ ฉันคิดว่าคุณไม่ต้องการทางออก VBA?
BruceWayne

1
นั่นเป็นเพียงลิงค์เพื่อกำหนดว่าตาราง (data) คืออะไร เมื่อใดก็ตามที่ฉันพยายามเพิ่มสูตรอาร์เรย์ภายในตารางข้อมูล Excel จะปฏิเสธด้วยข้อความนี้: "ไม่อนุญาตให้ใช้สูตรอาร์เรย์หลายเซลล์ในตาราง" และใช่ไม่มี VBA
Dmitry B.

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