สูตรสำหรับเดลต้าระหว่างตัวเลขสองตัว


9

ฉันกำลังพยายามหาเดลต้าระหว่างตัวเลขสองชุด ตัวเลขบางตัวเป็นบวกและลบ

การใช้สูตรต่อไปนี้ใช้งานได้ประมาณ 99% ของเวลา:

=IF(I18<0,I18+R18,IF(I18>0,I18-R18))

แต่เมื่อI18และเป็นตัวเลขที่ติดลบฉันต้องการR18 I18-R18ฉันได้ลองหลายIF ANDคำสั่ง แต่ดูเหมือนจะไม่ถูกต้อง หวังว่าใครบางคนสามารถแนะนำฉันในทิศทางที่ถูกต้อง


3
คุณลืมที่จะพูดสิ่งที่จะเกิดขึ้นถ้าI18เป็นศูนย์
Blackwood

3
"เมื่อไหร่I18และR18เป็นจำนวนลบฉันต้องการI18-R18" คุณแน่ใจหรือว่าคุณหมายถึงสิ่งนี้ ฉันคิดว่าคุณต้องการให้เดลต้าเป็นความแตกต่างแน่นอน หากI18เป็น-2และR18เป็นผลของคุณเป็นไปได้-1 -1คุณไม่ต้องการตัวเลขที่เป็นบวกในทุกกรณีใช่ไหม
JoL

ไม่=ABS(I18)-ABS(R18)ผลิตผลลัพธ์ที่ต้องการ?
Salman A

3
คำถามของคุณไม่ชัดเจนจริงๆ ฉันสามารถเข้าใจสิ่งที่คุณเป็นเมื่อฉันเห็นคำตอบ (และฉันก็ยังไม่แน่ใจว่าเป็นสิ่งที่คุณต้องการ) นอกจากนี้เดลต้าระหว่าง A และ B จะทำได้ก็ต่อA+Bเมื่อทั้ง A และ B เป็นศูนย์
Dmitry Grigoryev

3
เดลต้ามักจะหมายถึงความแตกต่างระหว่างสองหมายเลขซึ่งเป็นเสมอ ABและถ้าคุณต้องการที่จะมีความหมายว่าตัวเลขจะสูงกว่าที่คุณจะใช้เวลาค่าสัมบูรณ์เอบีเอส (AB)
มิก

คำตอบ:


55

ดูเหมือนคุณต้องการความแตกต่างระหว่าง ( I18และR18) และคุณต้องการให้มันเป็นค่าบวกเสมอหรือไม่

สูตรนี้จะทำเช่นนั้น:

=ABS(I18-R18)

มันจะให้คำตอบที่ถูกต้องไม่ว่าจะI18เป็นบวกลบหรือศูนย์


3
ดูความซับซ้อนของคำตอบอื่น ๆ ! ง่าย ๆ เข้าไว้!
Stewart

11
เพื่อความเป็นธรรมคำถามที่ถามถึงวิธีการIF()ทำงานซ้อนกันอย่างถูกต้อง คำตอบอื่น ๆ ตอบคำถามที่ถาม แต่บางครั้งการใช้เส้นทางที่แตกต่างกันจะทำให้คุณไปในที่ที่ถูกต้องเร็วขึ้น
Steve Kennedy

@Startart เพื่อความยุติธรรมมากขึ้นมันไม่ชัดเจนถ้า OP ต้องการความแตกต่างที่แน่นอน คำตอบของ ToddCurry และ PeterH ดูเหมือนจะทำตามเงื่อนไขชุด OP ที่ไม่นำไปสู่ความแตกต่างอย่างแท้จริง
JoL

@Start เริ่มต้นคำตอบอื่น ๆ ส่วนใหญ่จะเป็นแบบเดียวกันกับคำตอบยกเว้นว่าพวกเขาพัฒนาฟังก์ชัน ABS () ในบล็อกแบบมีเงื่อนไขพื้นฐานเพิ่มเติม แต่ไม่มีอะไรซับซ้อนจริงๆ
cedbeu

1
@cedbeu ซับซ้อนแน่นอน หากเพียงเพราะคำตอบอื่น ๆ นั้นอ่านและวิเคราะห์ได้ยาก
สจ๊วต

6

แทนที่จะตรวจสอบตัวถูกดำเนินการเพื่อปฏิเสธผลตรวจสอบผลลัพธ์

=IF(I18-R18>0,I18-R18,R18-I18)

3
เงื่อนไขอาจถูกแทนที่ด้วยI18>R18
Liora Haydont

5

มาลดความซับซ้อนของรหัสต้นฉบับของคุณ:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

ตอนนี้คุณพูดว่าเมื่อ X <0 และ Y <0 คุณต้องการให้ผลลัพธ์เป็น X - Y ไม่ใช่ X + Y ตกลง

If Y < 0:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y
Else:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y

นั่นคือเขียน

=IF(R18<0,IF(I18<0,I18-R18,I18+R18),IF(I18<0,I18-R18,I18+R18))

ตามที่ระบุไว้ข้างต้นคุณไม่มีกรณีเป็นศูนย์ คุณสามารถเปลี่ยนหนึ่งในตัวเปรียบเทียบ LT / GT เป็น LE / GE เพียงแค่เพิ่มเครื่องหมายเท่ากับ - ขึ้นอยู่กับข้อมูลและตรรกะของคุณ


ยกเว้นว่าฉันกำลังอ่านอะไรผิดพลาดในรหัสปลอมขนาดใหญ่ที่คุณมีIf Y<0 {A} Else {B}แต่ A และ B เหมือนกัน มีการพิมพ์ผิดหรือเปล่า?
Kamil Drakari

3

คุณสามารถใช้ด้านล่าง:

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18)))

ข้อบกพร่องเดียวที่ฉันเห็นได้คือสิ่งนี้คุณทำอะไรในอินสแตนซ์ที่I18 = 0คุณไม่มีอะไรกำหนดไว้สำหรับสิ่งนี้

อย่างไรก็ตามหากคุณต้องการเพิ่มบางสิ่งสำหรับอินสแตนซ์นั้นดูด้านล่าง

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18,"IF I18 = zero goes here")))

1

ฉันไม่รู้เกี่ยวกับ ABS ฉันจะแนะนำ

= SQRT ((I18-R18) ^ 2)


2
พิจารณาว่าการคำนวณรากที่สองนั้นมีความคลาดเคลื่อนที่ไม่รอบรู้และมีแนวโน้มที่จะปัดเศษซึ่งน้อยกว่าค่าที่เหมาะสม
David Foerster

0

สิ่งนี้ใช้ได้สำหรับฉัน -> IF (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

สิ่งนี้ครอบคลุมทุกสถานการณ์: ตัวแปร A | ตัวแปร B + ve | + ve + ve | -ve -ve | + ve -ve | -ve


(1) ตารางการรวมกันที่เป็นไปได้สี่ (2²) ของสองตัวแปรไบนารี ( + /  -) นั้นไม่สำคัญและการแสดงให้เห็นก็ไม่ได้ทำให้อะไรชัดเจนขึ้นสำหรับคำตอบของคุณ หากคุณกำลังจะโพสต์คำตอบสำหรับคำถามที่ไม่ชัดเจนเหมือนคำถามนี้มันจะเป็นประโยชน์ในการอธิบายคำถามที่คุณคิดว่าคุณกำลังตอบอยู่ (2) ไม่ว่าคุณจะทำอะไรสูตรของคุณก็ดูซับซ้อนโดยไม่จำเป็น การอธิบายสิ่งที่กำลังทำอยู่จะเป็นประโยชน์ ……………………………………………………ทุก…ไม่ตอบความเห็น แก้ไข  คำตอบของคุณเพื่อให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
สกอตต์

0

ฉันเพิ่งเจอสถานการณ์ (การวัดการอ่านแล็บสี) ซึ่งฉันไม่ต้องการความแตกต่างเพียงอย่างเดียวระหว่าง x & y แต่เป็นการเคลื่อนไหวเดลต้าเชิงบวกหรือเชิงลบ ตามปกติแล้ว -5 ลบ -2 = -3 แต่ต้องการแสดงว่าเดลต้าเป็นไปในทิศทางที่เป็นบวก -3 ไม่ใช่สิ่งที่ฉันกำลังมองหา:

= IF (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))

เพียงแค่ใส่ถ้าการอ่านที่ 2 (ใหม่กว่า) มีขนาดเล็กลงฉันรู้ว่าผลลัพธ์คือการเคลื่อนที่เชิงลบ (ดังนั้น * -1) และเลื่อนไปทางด้านลบของแกนมากขึ้น มิฉะนั้นถ้าการอ่านครั้งที่สองมีขนาดใหญ่กว่าค่า ABS บริสุทธิ์จะรู้ได้ถึงความแตกต่างในทิศทางบวก

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