สูตรอาร์เรย์เพื่อกำจัดเซลล์ว่างในรายการแบบหล่นลง


0

ทำตามขั้นตอน a you tube video, Excel Magic Trick 916: ลบช่องว่างในการตรวจสอบข้อมูลแบบหล่นลงรายการ 5 ตัวอย่าง เมื่อฉันกดปุ่มควบคุม> shift> enter จากนั้นก็คัดลอกลงเซลล์ทั้งหมดของฉันแสดงชื่อ SAME เป็นเซลล์แรกตรงข้ามกับชื่อที่ต่างกันเช่นเดียวกับในหลอดที่คุณพยายามที่จะบรรลุ ข้อแตกต่างคือฉันใช้ EXCEL 2013 และฉันเชื่อว่าพวกเขาใช้ Excel 2007 ในวิดีโอ นี่คือสูตรที่ฉันใช้ความคิดใด ๆ ที่ผิดปกติ

=IF(ROWS(C$2:C2)>COUNTA($A$2:$A$12),"",INDEX($A$2:$A$12,SMALL(IF($A$2:$A$12<>"",ROW($A$2:$A$12)-ROW($A$2)+1),ROWS(C$2:C2))))

ฉันเดา; คัดลอก A2: A12 ถึง C2: ... ปล่อยช่องว่างในแหล่งที่มา นั่นหมายความว่าสูตรนี้ต้องอยู่ใน C2 สำหรับ starters
Hannu

@ LDC3 การก่อสร้างที่ใช้เป็นสิ่งที่ดีอย่างสมบูรณ์แบบ และ ROW ($ A $ 2: $ A $ 12) -ROW ($ A $ 2) +1 ไม่ได้อยู่ที่ "เสมอ 1" เนื่องจากสูตรที่เป็นปัญหาคือสูตร ARRAY ดังนั้นส่วนนี้จึงคืนค่า ARRAY ไม่ใช่ เพียงหนึ่งเดียวเทียบเท่ากับ: {2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12} - ลูกศร ($ A $ 2) +1 +1 คือ {2; 3; 4; 5; 6 ; 7; 8; 9; 10; 11; 12} -2 + 1, คือ {1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11} และเนื่องจากสูตรของ OP ได้รับการออกแบบให้คัดลอกลงไปยังเซลล์อื่น ๆ ROWS (C $ 2: C2) จึงไม่ใช่ "เสมอ 1" เนื่องจากในแถวต่อไปที่จะคัดลอกสูตรนี้จะกลายเป็นต่อเนื่อง: ROWS (C $ 2: C3) (= 2), ROWS (C $ 2: C4) (= 3), ฯลฯ
XOR LX

@ XORLX โอเคมันเป็นความผิดพลาดของฉันที่ฉันไม่ได้ดูวิดีโอและฉันไม่ได้ตระหนักว่ามันเป็นสูตรอาร์เรย์ (OP ไม่ได้พูดถึงเรื่องนี้)
LDC3

คำตอบ:


1

ตัวแปรที่ซับซ้อนน้อยกว่าที่นี่ พิมพ์สิ่งนี้ลงในเซลล์ C2

= IFERROR (ขนาดใหญ่ ($ A $ 2: $ A $ 12 แถว (C $ 2: C2)), "")

IFERROR()ตรวจสอบข้อผิดพลาดและแสดงค่าผลลัพธ์ในกรณีที่ไม่มีข้อผิดพลาด
ในกรณีที่มีข้อผิดพลาดค่าที่กำหนดเป็นอาร์กิวเมนต์ที่สองจะปรากฏขึ้นแทน

ตัวอย่างนี้ลบความจำเป็นในการใช้สูตรอาร์เรย์
และกลับคำสั่งไปที่ใหญ่ที่สุดก่อน - แทนที่ LARGE () สำหรับ SMALL () เพื่อให้เล็กที่สุดก่อน
ทำ "เติม" ลงในเซลล์ใด ๆ ที่คุณต้องการ

กรอกข้อมูลแหล่งที่มาใน $ A $ 2: $ A $ 12 (ขยายช่วงของ $ A $ 2: $ A $ 12 ในสูตรหากคุณต้องการขยายออก)

การมี TEXT "$ A $ 2: $ A $ 12" ในเช่น C1 จะINDIRECT($C$1)ทำงานแทน$A$2:$A$12ในสูตร


คุณกำลังสร้างรหัสใหม่ที่นี่โดยไม่มีเหตุผล - มันเป็นการออกแบบที่ไม่ดี ใช้=IFERROR(LARGE($A$2:$A$12;ROWS(C$2:C2)),"")
CallumDA

การออกแบบที่ไม่ดีนั้นมาจากการไม่รู้เกี่ยวกับทุกฟังก์ชั่นและการหลอกลวงมีใช่ ฉันใช้ Excel มาหลายปีแล้ว แต่ก็ยังพบสิ่งใหม่ - IFERROR()เป็นตัวอย่างล่าสุดของสิ่งนั้น คุณสามารถเลือกคำได้มากกว่านี้ แก้ไขคำตอบแล้ว
Hannu

+1 สำหรับคำตอบของคุณมันดี ขอโทษสำหรับถ้อยคำของฉัน - ฉันไม่ได้ตั้งใจให้อ่าน
CallumDA

ไม่มีการกระทำผิดกฎหมาย :-)
Hannu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.