Excel 2013 - การตรวจสอบความถูกต้องของข้อมูล - สร้างรายการแบบหล่นลงพร้อมค่าถ้าตรงกับเกณฑ์ที่สอง


0

ฉันจะทำให้ปัญหาของฉันง่ายขึ้นมากที่สุด ฉันได้สองแผ่นใน Excel ในแผ่นงานแรกฉันกำลังสร้างรายการที่ตั้ง ฉันจำเป็นต้องเลือกพื้นที่ที่ตั้งอยู่ในคอลัมน์ A ก่อนที่ฉันจะพิมพ์ในตำแหน่งในคอลัมน์ B ในคอลัมน์ถัดไป (C) จะต้องมี ID ที่สร้างขึ้นโดยอัตโนมัติ ที่สองได้รับ ID 002 ฯลฯ )

ในแผ่นงานที่สองของฉันฉันกำลังสร้างรายการของสินทรัพย์ ดังนั้นอีกครั้งฉันเลือกพื้นที่ในคอลัมน์ A และพิมพ์ชื่อของเนื้อหาในคอลัมน์ B ตอนนี้ฉันต้องการที่จะมีรายการแบบหล่นลงในคอลัมน์ C ซึ่งมันแสดงให้ฉันเฉพาะ ID เหล่านั้นจากตารางแรกที่พื้นที่เดียวกัน ฉันพยายามใช้ฟังก์ชัน OFFSET แต่จุดที่ขาดหายไปคือ "เลือกถ้า" (เช่น countif หรือ sumif) เพื่อ จำกัด รายการ ID ให้ผู้ที่มีพื้นที่เดียวกัน

อาจมีสถานที่และสินทรัพย์จำนวนมากในแต่ละพื้นที่ แต่ทุกสถานที่และทรัพย์สินทุกแห่งสามารถแมปเข้ากับที่เดียว

รอคอยที่จะตอบคุณผู้ชาย! ทั้งโซลูชัน excel หรือโซลูชัน vba น่ากลัว

คำตอบ:


0

ฉันขอแนะนำให้สร้างคอลัมน์ตัวช่วยที่มีค่าเฉพาะที่จะใช้ใน VLOOKUP ตัวอย่างเช่น; สมมติว่าคุณมีพื้นที่ 1, พื้นที่ 2, พื้นที่ 3 และพื้นที่ 1 (อีกครั้ง) และดำเนินต่อไป รวมค่านี้เข้ากับค่าที่เพิ่มขึ้น (เช่น 01, 02, 03, ... ) และสร้าง 01Area1, 01Area2, 01Area3 และ 02Area1 . ตอนนี้คุณรู้สิ่งที่จะเรียกสำหรับแต่ละรายการในแผ่นงานที่สอง หากคุณเลือก Area1 ในคอลัมน์ A จากนั้นคุณต้องค้นหา จำนวนที่เพิ่มขึ้น & amp; Area1 . ตัวเลขที่เพิ่มขึ้นโดยค่าสามารถสร้างขึ้นโดย COUNTIF ฟังก์ชั่นที่ใช้ช่วงการขยาย:

=COUNTIF($A$2:A2,A2)

เมื่อขยายช่วงสูตรจะนับเฉพาะค่าจนถึงแถวของตัวเองเท่านั้น แต้มต่อของวิธีนี้เท่านั้นคุณต้องสร้างรายการใน ที่อื่น ๆ

ที่นี่สองลิงค์ที่อธิบายการใช้ที่คล้ายกัน:

  1. https://www.spreadsheetweb.com/how-to-get-nth-match-with-vlookup/
  2. https://www.spreadsheetweb.com/pricing-list-quoting-tool-part-1/

0

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

ตั้งค่าแผ่นงานสองตัวอย่าง Locations และ Assets, อย่างนี้:

Screenshot of Locations worksheet Screenshot of Assets worksheet

เพิ่มสองชื่อที่กำหนด:

  1. Areas=Locations!$A:$A
  2. IDs=Locations!$C:$C

สุดท้ายเพิ่มการตรวจสอบความถูกต้องของข้อมูลในรายการแบบหล่นลงในเซลล์ C2 ใน Assets เวิร์กชีตที่มีสูตรต่อไปนี้จากนั้นเติม / คัดลอกวางเซลล์ลง

=INDEX(IDs,MATCH(A2,Areas,0)):INDEX(IDs,MATCH(A2,Areas,0)+COUNTIF(Areas,A2)-1)

ข้อเสียของวิธีนี้คือ:

  • จำเป็นต้องใช้ชื่อที่กำหนด
  • ตารางสถานที่จะต้องจัดเรียง
  • ตารางอื่น ๆ ในแผ่นสถานที่ไม่สามารถตัดกันอย่างปลอดภัย Area คอลัมน์ยกเว้นว่าจะรับประกันว่าจะไม่มีค่าที่ตรงกับตารางสถานที่ Area ค่า


โซลูชันทางเลือกต่อไปนี้จะเอาชนะข้อเสียยกเว้นอีกตารางหนึ่ง อย่างไรก็ตามใช้เซลล์ในแผ่นงานสินทรัพย์เพื่อเก็บรายการของรายการแบบหล่นลง

แผ่นงานสินทรัพย์มีการตั้งค่าด้วยคอลัมน์เพิ่มเติม:

Screenshot of Assets worksheet

ในครั้งนี้ 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()
  )
)

หมายเหตุและคำอธิบายที่จะมาหลังจากฉันนอนหลับ ;-)
robinCTS

ก่อนอื่นขอขอบคุณ robinCTS เป็นอย่างมากสำหรับการทำงานที่ยอดเยี่ยมของคุณ! ฉันมีความคิดเดียวกันกับการจับคู่ดัชนี แต่ปัญหาคือว่ารายการไม่สามารถจัดเรียงได้เพราะฉันจะไม่กรอกข้อมูลในรายการ แต่มีคนอื่นมากมาย นอกจากนี้ทางเลือกอื่นรวมถึงคอลัมน์ผู้ช่วยนั้นยากที่จะนำมาใช้เนื่องจากจะมีสถานที่มากมาย Btw: ฉันได้รับข้อผิดพลาดนี้โดยใช้สูตรการจับคู่ดัชนีแรกของคุณ: "คุณไม่สามารถใช้ตัวดำเนินการอ้างอิง (เช่นยูเนี่ยนทางแยกและช่วง) หรือค่าคงที่อาร์เรย์สำหรับเกณฑ์การตรวจสอบข้อมูล
Moritz

@Moritz มันง่ายมากที่จะเพิ่มตัวจัดการเหตุการณ์ใน VBA เพื่อจัดเรียงรายการโดยอัตโนมัติทันทีที่คุณสลับออกจากแผ่นสถานที่ หากเป็นที่ยอมรับฉันจะเพิ่มรหัสลงในคำตอบของฉัน ใช่ฉันคิดคอลัมน์ผู้ช่วยอาจเป็นปัญหา นั่นเป็นเหตุผลที่ฉันเพิ่มโซลูชันการเรียงลำดับ สำหรับข้อผิดพลาดนั้นมัน ดูเหมือนว่า จะบ่นเกี่ยวกับ :แต่นั่นไม่สมเหตุสมผลเลย การตรวจสอบข้อมูล ทำ มักจะคายข้อผิดพลาดนั้นออกมา มาก เหตุผล ;-) ฉันใช้ Excel 2007 และการตรวจสอบข้อมูล มี มีการเปลี่ยนแปลงในรุ่นถัดไป แต่ไม่ควรส่งผลกระทบต่อสูตรนั้น ...
robinCTS

... คุณใช้เวอร์ชั่นอะไร คุณสร้างสมุดงานใหม่และตั้งค่าเหมือนตัวอย่างของฉันหรือไม่ ในสมุดงานใหม่นั้นลองใช้สูตรการตรวจสอบความถูกต้องของข้อมูล =A2:A8 ( เพียงแค่ ในกรณี ;-)) จากนั้นลองคัดลอกตารางตำแหน่งไปยังแผ่นสินทรัพย์และเปลี่ยนชื่อที่กำหนดให้ชี้ไปที่คอลัมน์สองคอลัมน์ ในที่สุดหลังจากการทดสอบครั้งสุดท้ายลองเปลี่ยนชื่อที่กำหนดในสูตรเพื่อใช้คอลัมน์โดยตรง หากคุณมี Excel 2010+ ให้ลองใช้คอลัมน์ในแผ่นสถานที่โดยตรง นี่มันทำให้งงจริงๆ
robinCTS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.