วิธีนับเฉพาะลบจากขวาไปซ้ายตามลำดับเท่านั้นให้หยุดนับถ้าค่าบวกปรากฏขึ้น


1

ในสเปรดชีต Excel ฉันมีหกเซลล์ ( A1- F1) ที่มีตัวเลข ฉันต้องการนับค่าลบติดกัน (ต่อเนื่อง) จากขวาไปซ้าย เช่น,

A1=2,  B1=6,  C1=-3, D1=-5, E1=-6, F1=-9  : Answer G1=4  (four continuous negative values)
A1=2,  B1=6,  C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=2,  B1=-6, C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=-2, B1=-6, C1=-3, D1=5,  E1=6,  F1=-9  : Answer G1=1
A1=-2, B1=-6, C1=-3, D1=3,  E1=-6, F1=-9  : Answer G1=2

หรือในสถานการณ์ที่คล้ายกัน แต่ด้วยคำพูดฉันต้องการนับจำนวนเซลล์ที่ต่อเนื่องกันที่มีอยู่REDโดยเริ่มจากด้านขวา:

A1=GREEN, B1=GREEN, C1=GREEN, D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=GREEN, C1=RED,   D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=RED,   C1=RED,   D1=GREEN, E1=GREEN, F1=RED  : Answer G1=1
A1=GREEN, B1=RED,   C1=RED,   D1=RED,   E1=RED,   F1=RED  : Answer G1=5

ฉันต้องการนับจากขวาไปซ้ายจนกระทั่งซีรี่ส์หยุดพัก


มีลำดับอื่น ๆ อีกไหม? วิธีการเกี่ยวกับ A1 = 4, B1 = 6, C1 = 15, D1 = 3, E1 = 7, F1 = 2: คำตอบ G1 = 3 เพราะทั้งสามค่าทางด้านขวาเป็นตัวเลขเฉพาะ
Blackwood

@Blackwood: ทำไมคุณถามว่า OP มีคำถามอื่นนอกเหนือจากคำถามที่เขาถามจริงหรือไม่
สกอตต์

คำตอบ:


1

ชนิด

=6-MAX(IF(A1:F1>=0, COLUMN(A1:F1), 0))

เข้าไปG1และกดCtrl+ +Shift Enterจากตัวอย่างแรกของคุณ (A1 = 2, B1 = 6, C1 = −3, D1 = −5, E1 = −6, F1 = −9) นิพจน์ย่อยจะสร้างอาร์เรย์เสมือนที่ดูเหมือน (1, 2, 0, 0, 0, 0) - แทนที่ตัวเลขที่ไม่เป็นลบด้วยหมายเลขคอลัมน์ของพวกเขาและแทนที่ตัวเลขที่เป็นลบด้วยศูนย์ การทำเช่นนั้นทำให้เรามีคอลัมน์สุดท้าย (ขวาสุด) ที่มีจำนวนที่ไม่เป็นลบดังนั้นทุกอย่างที่อยู่นอกเหนือนั้นจะต้องเป็นลบ ดังนั้นการลบออกจาก 6 บอกเราว่ามีจำนวนลบ (ต่อเนื่อง) จำนวนเท่าใดที่อยู่ทางขวาสุดของซีรีส์IF(X>=0, COLUMN(X), 0)MAX

Ctrl+ Shift+ Enter ทำให้มันเป็นสูตรอาร์เรย์ นั่นเป็นสิ่งที่จำเป็นเพื่อให้สามารถสร้างอาร์เรย์เสมือนได้

สำหรับคำถามรุ่นทางเลือกการแก้ปัญหาเกือบจะเหมือนกันทุกประการ:

=6-MAX(IF(A1:F1<>"RED", COLUMN(A1:F1), 0))

        สเปรดชีตที่มีข้อมูลอินพุตของ OP และผลลัพธ์ที่ต้องการ


0

สำหรับสูตรที่สามารถป้อนเป็นสูตรปกติให้ลอง:

=IFERROR(LOOKUP(2,1/(A1:F1>=0),{5,4,3,2,1,0}),6)

การค้นหาตรงกับรายการสุดท้ายที่ทดสอบTRUE จากนั้นเราจะส่งกลับจำนวนที่เหมาะสมจากอาร์เรย์

อย่างไรก็ตามหากค่าทั้งหมดเป็น<0เช่นนั้นLOOKUPข้อผิดพลาดส่งกลับดังนั้นเราต้องมีหก

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