สมมติว่าเป็นที่ยอมรับได้ว่าจะมีการเรียงลำดับตารางสถานที่โซลูชันที่ง่ายที่สุดมีเพียงสูตรการตรวจสอบข้อมูลที่ค่อนข้างสั้น ไม่จำเป็นต้องมีคอลัมน์หรือแถวผู้ช่วย
ตั้งค่าแผ่นงานสองตัวอย่าง Locations
และ Assets
, อย่างนี้:
เพิ่มสองชื่อที่กำหนด:
Areas
→ =Locations!$A:$A
IDs
→ =Locations!$C:$C
สุดท้ายเพิ่มการตรวจสอบความถูกต้องของข้อมูลในรายการแบบหล่นลงในเซลล์ C2
ใน Assets
เวิร์กชีตที่มีสูตรต่อไปนี้จากนั้นเติม / คัดลอกวางเซลล์ลง
=INDEX(IDs,MATCH(A2,Areas,0)):INDEX(IDs,MATCH(A2,Areas,0)+COUNTIF(Areas,A2)-1)
ข้อเสียของวิธีนี้คือ:
- จำเป็นต้องใช้ชื่อที่กำหนด
- ตารางสถานที่จะต้องจัดเรียง
- ตารางอื่น ๆ ในแผ่นสถานที่ไม่สามารถตัดกันอย่างปลอดภัย
Area
คอลัมน์ยกเว้นว่าจะรับประกันว่าจะไม่มีค่าที่ตรงกับตารางสถานที่ Area
ค่า
โซลูชันทางเลือกต่อไปนี้จะเอาชนะข้อเสียยกเว้นอีกตารางหนึ่ง อย่างไรก็ตามใช้เซลล์ในแผ่นงานสินทรัพย์เพื่อเก็บรายการของรายการแบบหล่นลง
แผ่นงานสินทรัพย์มีการตั้งค่าด้วยคอลัมน์เพิ่มเติม:
ในครั้งนี้ C2
สูตรการตรวจสอบข้อมูลคือ:
=IF(SUMPRODUCT(--ISNA(C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2))))))=0,$I$1,C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2)))-SUMPRODUCT(--ISNA(C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2))))))))
ป้อนสูตรนี้ใน D2
และกรอก:
=
IF(
SUMPRODUCT(
--ISNA(
E2:INDEX(
(2:2),
COLUMN(E2)-1+MAX(1,COUNTA(E2:INDEX(2:2,COLUMNS(2:2))))
)
)
)=0,
"ERROR",
"ok"
)
หลายเซลล์ใส่สูตรสุดท้ายนี้ลงในเซลล์ที่เริ่ม E2
และไปจนถึงจำนวนสูงสุดของสถานที่ที่คาดหวังในพื้นที่ E2:I2
):
=
INDEX(
Locations!$C:$C,
IFERROR(
SMALL(
IFERROR(1/(1/(
(Locations!$A$2:INDEX(Locations!$A:$A,COUNTA(Locations!$A:$A))=IF($A2="",NA(),$A2))
*ROW($A$2:INDEX($A:$A,COUNTA(Locations!$A:$A)))
)),FALSE ),
COLUMN(INDEX(2:2,1):INDEX(2:2,MAX(2,COUNTIF(Locations!$A$2:INDEX(Locations!$A:$A,COUNTA(Locations!$A:$A)),$A2))))
),
NA()
)
)