นี่คือทางออกทั่วไป ฉันวางตำแหน่งไว้ที่กึ่งกลางของแผ่นงานเพื่อแสดงการจัดการคอลัมน์ว่างก่อนหรือหลังช่วง
ฉันใช้คอลัมน์ตัวช่วยบางตัวเพื่อทำให้มองเห็นและแก้ไขปัญหาได้ง่ายขึ้น สูตรไม่แน่นอนถ้าคุณพยายามทำทุกอย่างในสูตรเดียวแม้ว่าคุณจะสามารถรวมเป็นสูตรเดียวได้หากคุณเป็นคนตะกละสำหรับการลงโทษ
แทนที่จะป้อนข้อมูลของคุณอีกครั้งฉันใช้สี่คอลัมน์ (C ถึง F) ของตัวเลข 1 ถึง 4 โดยมีรูปแบบองค์ประกอบที่ขาดหายไปแตกต่างกันในแถวเพื่อตรวจสอบเงื่อนไขต่างๆ
ป้อนข้อมูล
คอลัมน์ข้อมูลคอลัมน์แรกและคอลัมน์สุดท้ายจะถูกป้อนเป็นตัวแปรเพื่อให้คุณสามารถใช้คอลัมน์ได้มากเท่าที่คุณต้องการตำแหน่งใดก็ได้ที่คุณต้องการ ฉันเลือก I1 และ K1 ตามอำเภอใจเพื่อเก็บตัวอักษรคอลัมน์แรกและตัวสุดท้าย
ระบุคอลัมน์ที่มีประชากรแรก
สำหรับแต่ละแถวคุณจะต้องค้นหาค่าจริงและค่าสุดท้ายเนื่องจาก "หลุม" จะถูกนับระหว่างค่าเหล่านั้นเท่านั้น ฉันใช้คอลัมน์ H เพื่อระบุคอลัมน์แรกด้วยค่าในแถว ฉันเริ่มข้อมูลในแถว 3 ดังนั้น H3 จึงมี:
=MATCH(TRUE,LEN(C3:F3)>0,0)+COLUMN(INDIRECT($I$1&":"&$I$1))-1
แก้ไข: โปรดทราบว่าผมทดสอบนี้เป็น LO Calc 1
ซึ่งการเปลี่ยนแปลงที่แท้จริงในสูตรนี้ ใน Calc สูตรนี้จะกลายเป็น:
=MATCH(1,LEN(C3:F3)>0,0)+COLUMN(INDIRECT($I$1&":"&$I$1))-1
ซึ่งเป็นสูตรดั้งเดิมในคำตอบนี้และปรากฎว่าการ1
ย่อยให้ Excel สำหรับ Excel คุณจะต้องมีสูตรแรก
นี้เป็นสูตรอาร์เรย์ดังนั้นจึงต้องมีการป้อนโดยใช้Ctrl+ + ShiftEnter
การฝังฟังก์ชัน INDIRECT ภายในฟังก์ชั่น LEN นั้นใช้งานไม่ได้ คุณจะต้องแก้ไขช่วงคอลัมน์ถ้าคุณใช้จำนวนคอลัมน์ที่แตกต่างกัน
ฟังก์ชัน COLUMN และ-1
ปรับสำหรับตำแหน่งเริ่มต้นของช่วง
จำนวนของค่าถ้าไม่มีรู
คอลัมน์ I คือจำนวนคอลัมน์ตั้งแต่ค่าแรกไปจนถึงค่าสุดท้าย (จำนวนค่าที่เป็นไปได้หากไม่มีรู) เซลล์ I3 ประกอบด้วย:
=LOOKUP(9.99E+307,INDIRECT($I$1&ROW()&":"&$K$1&ROW()))+COLUMN(INDIRECT($I$1&":"&$I$1))-H3
ฟังก์ชัน LOOKUP ระบุคอลัมน์สุดท้ายที่มีค่า อีกครั้งจะเพิ่มการปรับตำแหน่งของช่วงข้อมูลบนแผ่นงาน มันจะลบจำนวนคอลัมน์ที่มีประชากรแรกจากคอลัมน์สุดท้าย
จำนวนของค่าที่เติม
คอลัมน์ J ประกอบด้วยจำนวนของค่าในช่วงที่มีประชากร เซลล์ J3 ประกอบด้วย:
=COUNT(INDIRECT($I$1&ROW()&":"&$K$1&ROW()))
สิ่งนี้จะให้สิ่งที่คุณต้องการเพื่อระบุรูของคุณ
ระบุแถวที่มีรู
ผลลัพธ์ที่ต้องการคือสิ่งที่อยู่ในคอลัมน์ G เซลล์ G3 ประกอบด้วย:
=IF(I3>J3,"hole","")
แก้ไข: ฉันได้รวบรวมและได้รับในสูตรเดียว คุณสามารถใช้สิ่งนี้ในเซลล์ G3:
=LOOKUP(9.99E+307,INDIRECT($I$1&ROW()&":"&$K$1&ROW()))
+COLUMN(INDIRECT($I$1&":"&$I$1))-MATCH(TRUE,LEN(C3:F3)>0,0)
-COLUMN(INDIRECT($I$1&":"&$I$1))+1
>COUNT(INDIRECT($I$1&ROW()&":"&$K$1&ROW()))
ฉันได้เพิ่มตัวแบ่งบรรทัดเพื่อให้สามารถอ่านได้ คุณต้องการคัดลอกและวางคุณจะต้องลบสิ่งเหล่านั้นและระยะห่างเพิ่มเติม
นี้เป็นสูตรอาร์เรย์ดังนั้นคุณจำเป็นต้องใส่มันด้วยCtrl+ +Shift Enterผลลัพธ์ที่ได้เป็นเพียง TRUE หรือ FALSE ว่ามีรูหรือไม่: