คุณสามารถประเมินนิพจน์ excel นี้ได้อย่างไร


0

ฉันพยายามประเมินนิพจน์ต่อไปนี้ใน Excel:

IF(A2:C6="apple",ROW(A2:C6)-ROW(A2)+1,ROW(C6)+1),2)

หากappleอยู่ในอาร์เรย์เงื่อนไข if จะส่งคืน

ROW(A2:C6)-ROW(A2)+1

และ

ROW(A2:C6) = 2 

ดังนั้น

ROW(A2:C6)-ROW(A2)+1 = 2-2+1 = 1 

ถ้าเงื่อนไขประเมินเป็น False มันจะกลับมา

ROW(C6)+1 = 6+1 = 7  

ฉันกำลังพยายามทำให้สูตรจากไซต์นี้ใช้งานได้


แล้วปัญหาคืออะไร
เมลานี

2
,2)ไม่ควรจะมี โพสต์ในฟอรัมที่คุณเชื่อมโยงSMALL()ใช้จะมีมูลค่า,2)แต่ไม่จำเป็นในIF()คำชี้แจงนี้ คุณIF()จะไม่ทำงานเช่นนี้เพราะA2:C6="apple"ไม่สามารถประเมินได้เหมือนเดิม
Jerry

ROW(A2:C6) = 2 เป็นเท็จเพราะนี่ก็หมายความว่าเป็นสูตรอาร์เรย์และจะกลับมาแถวของเซลล์ที่ผลตอบแทนจริงที่จะเป็นเท่ากับROW(A2:C6) คือการบัญชีสำหรับส่วนหัวคอลัมน์อาจมี เพื่อที่ว่าอาร์เรย์จะไม่ส่งคืนแถวของแผ่นงาน แต่มีกี่แถวลงมาจากการจับคู่ แล้วเมื่อไม่มีการจับคู่มันก็จะส่งกลับค่าเริ่มต้น c7 น่าจะเป็นเซลล์ว่างเปล่า แต่พวกเขาใช้มันเป็น C6 + 1 สำหรับการลากลงและการอ่าน apple-ROW(A2)+1A2
user2140261

@Jerry - A2: C6 = "แอปเปิ้ล" ไม่เป็นไร - มันส่งคืน "อาร์เรย์" ตามคำตอบของฉัน
barry houdini

1
@MarcelloRomani - ใช่ COUNTIF จะดีกว่าถ้าคุณต้องการนับ "แอปเปิ้ล" ในช่วง ..... แต่จุดที่นี่ไม่นับพวกเขา แต่เพื่อกลับอาร์เรย์ที่มีแถวที่มี "แอปเปิ้ล" อยู่ - และในทางกลับกันจะช่วยให้คุณได้รับการเกิดขึ้นครั้งที่ 1, 2, 3 และอื่น ๆ และดึงค่าจากคอลัมน์อื่นที่สอดคล้องกับผู้ที่
barry houdini

คำตอบ:


3

นิพจน์ IF ส่งคืน "อาร์เรย์" ของค่า

=IF(A2:C6="apple",ROW(A2:C6)-ROW(A2)+1,ROW(C6)+1)

สำหรับเซลล์ทุกเซลล์ใน A2: C6 ที่มี "apple" หมายเลขแถวสัมพัทธ์จะถูกส่งคืน e, g หาก Apple อยู่ใน A2 แล้วจะถูกส่งคืน 1 หาก Apple คืนค่าใน A3 2 เป็นต้นหาก "apple" ไม่ถูกส่งคืน ในเซลล์ใด ๆ แล้วค่าเริ่มต้น ROW (C6) +1 จะถูกส่งกลับดังนั้นตัวอย่างเช่น - ถ้า "Apple" เป็นเฉพาะใน A3 และ C6 คุณจะได้รับผลลัพธ์นี้โดยด้านบน

{7,7,7;2,7,7;7,7,7;7,7,7;7,7,5}

คุณสามารถดูได้โดยใส่สูตรในเซลล์แล้วกด F2 ตามด้วย F9

ส่วน FALSE ของสูตรไม่จำเป็นต้องใช้ตามปกติซึ่งจะเพียงพอ

=IF(A2:C6="apple",ROW(A2:C6)-ROW(A2)+1)

ดังนั้นค่า FALSE จะส่งกลับค่า FALSE ..... ซึ่ง SMALL จะถูกข้ามไป

... ดังนั้นสูตรที่ดีกว่าน่าจะเป็นดังนี้:

=INDEX(B2:B6,SMALL(IF(A2:A6="apple",ROW(A2:A6)-ROW(A2)+1),2))

ที่จะให้ค่าที่สอดคล้องกันใน B2: B6 สำหรับแถวที่ 2 กับ "Apple" ใน A2: A6 - ไม่จำเป็นต้องดู A2: C6 เมื่อผลไม้อยู่ภายในคอลัมน์แรกเท่านั้น - นี่คือ "สูตรอาร์เรย์" ซึ่งจะต้องได้รับการยืนยันด้วย CTRL+SHIFT+ENTER


+1 นอกจากนี้ F2 + F9 ยังเป็นคุณสมบัติที่ยอดเยี่ยมอีกด้วย!
Jerry

@ user2371290 ความคิดเห็นของคุณดูเหมือนจะไม่สมบูรณ์คุณสามารถชี้แจง ??
barry houdini

โปรแกรมมีวิธีการอย่างไรในการส่งคืนจำนวนแถวเมื่อ apple เกิดขึ้นเป็นครั้งที่สอง ถ้าฉันใช้ = IF (A2: C6 = "apple", "Bob", "Peter") สูตรจะไม่ส่งคืน Bob หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.