Công thức cho delta giữa hai số


9

Tôi đang cố gắng tìm đồng bằng giữa hai bộ số. Một số số dương, một số âm.

Sử dụng công thức sau đây hoạt động khoảng 99% thời gian:

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

Tuy nhiên, khi I18R18là số âm, tôi cần I18-R18. Tôi đã thử nhiều IF ANDcâu, nhưng dường như không thể hiểu đúng. Hy vọng ai đó có thể hướng dẫn tôi đi đúng hướng.


3
Bạn quên nói điều gì sẽ xảy ra nếu I18bằng không.
Blackwood

3
"Khi nào I18R18là số âm, tôi cần I18-R18" Bạn có chắc là bạn muốn nói điều này không? Tôi nghĩ bạn muốn đồng bằng như một sự khác biệt tuyệt đối. Nếu I18-2R18-1, kết quả của bạn sẽ được -1. Bạn không muốn một số dương trong mọi trường hợp?
JoL

=ABS(I18)-ABS(R18)sản xuất đầu ra mong muốn?
Salman A

3
Câu hỏi của bạn thực sự không rõ ràng. Tôi chỉ có thể hiểu bạn là gì sau khi tôi thấy câu trả lời (và tôi vẫn không chắc đó là điều bạn muốn). Ngoài ra, một delta giữa A và B chỉ có thể là A+Bnếu cả A và B đều bằng không.
Dmitry Grigoryev

3
Các đồng bằng thường có nghĩa là sự khác biệt giữa hai con số, đó là luôn luôn AB , và trừ khi bạn muốn biểu mà các số là lớn hơn, bạn sẽ có được những giá trị tuyệt đối abs (AB) .
Mick

Câu trả lời:


55

Có vẻ như bạn chỉ muốn sự khác biệt (delta) giữa I18R18, và bạn muốn nó luôn luôn tích cực?

Công thức này sẽ làm điều đó:

=ABS(I18-R18)

Nó sẽ đưa ra câu trả lời đúng cho dù I18là tích cực, tiêu cực hay bằng không.


3
Hãy xem các câu trả lời khác phức tạp như thế nào! Giữ cho nó đơn giản!
Stewart

11
Để công bằng, câu hỏi hỏi làm thế nào để làm cho IF()công việc lồng nhau chính xác. Các câu trả lời khác giải quyết câu hỏi đã được hỏi. Nhưng đôi khi, đi một con đường khác sẽ đưa bạn đến đúng nơi nhanh hơn.
Steve Kennedy

@Stewart Để công bằng hơn, không rõ OP có muốn sự khác biệt tuyệt đối hay không. Các câu trả lời của ToddCurry và PeterH mong muốn đáp ứng một điều kiện mà bộ OP không dẫn đến sự khác biệt tuyệt đối.
JoL

@Stewart, hầu hết các câu trả lời khác về cơ bản đều giống với câu trả lời này, ngoại trừ việc chúng phát triển hàm ABS () trong các khối điều kiện cơ bản hơn. Nhưng không có gì phức tạp, thực sự.
cedbeu

1
@cedbeu Phức tạp, chắc chắn. Nếu chỉ vì các câu trả lời khác khó đọc và phân tích hơn, về mặt tinh thần.
Stewart

6

Thay vì kiểm tra các toán hạng cho âm tính, hãy kiểm tra kết quả.

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

3
điều kiện cũng có thể được thay thế bằngI18>R18
Liora Haydont

5

Hãy đơn giản hóa mã gốc của bạn:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

Bây giờ bạn nói rằng khi X <0 và Y <0, bạn thực sự muốn kết quả là X - Y chứ không phải X + Y. OK.

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

Đó là viết.

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

Như đã lưu ý ở trên, bạn không có trường hợp nào. Bạn có thể thay đổi một trong các bộ so sánh LT / GT thành LE / GE bằng cách thêm một dấu bằng - tùy thuộc vào dữ liệu và logic của bạn.


Trừ khi tôi đọc sai một cái gì đó, trong mã giả lớn hơn bạn có If Y<0 {A} Else {B}nhưng A và B giống hệt nhau. Có một lỗi đánh máy?
Kamil Drakari

3

Bạn có thể sử dụng như sau:

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

Lỗ hổng duy nhất tôi có thể thấy với điều này là, bạn làm gì trong một trường hợp I18 = 0, bạn không có gì được đặt cho việc này.

Dù sao, nếu bạn muốn thêm một cái gì đó cho ví dụ đó, xem bên dưới:

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

1

Tôi không biết về ABS. Tôi định đề nghị

= SQRT ((I18-R18) ^ 2)


2
Xem xét rằng việc tính toán căn bậc hai của nó không tầm thường và dễ bị lỗi làm tròn, điều đó ít hơn tối ưu.
David foerster

0

Điều này làm việc cho tôi -> IF (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

Điều này bao gồm tất cả các kịch bản: Biến A | Biến B + ve | + ve + ve | -ve -ve | + ve -ve | -đã


(1) Bảng bốn (2²) kết hợp có thể có của hai biến nhị phân ( + /  -) là không đáng kể và cho thấy nó không có gì để làm rõ câu trả lời của bạn. Nếu bạn sẽ đăng một câu trả lời cho một câu hỏi không rõ ràng như câu hỏi này, thật hữu ích để giải thích câu hỏi mà bạn nghĩ bạn đang trả lời. (2) Dù bạn đang làm gì, công thức của bạn có vẻ phức tạp không cần thiết. Giải thích những gì nó đang làm sẽ hữu ích. Rất khó khăn khi bạn không trả lời bình luận; chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
Scott

0

Tôi vừa gặp phải một tình huống (đo màu đọc Lab) trong đó tôi không chỉ đơn giản là sự khác biệt giữa x & y mà là chuyển động delta dương hay âm. Vì vậy, bình thường -5 trừ -2 = -3 nhưng muốn cho thấy rằng đồng bằng thực sự theo hướng tích cực -3 không phải là điều tôi đang tìm kiếm như vậy:

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

Nói một cách đơn giản nếu lần đọc thứ 2 (mới hơn) nhỏ hơn tôi biết kết quả là chuyển động âm (vì vậy * -1) và đã di chuyển sâu hơn về phía tiêu cực của trục. Khác nếu đọc lần thứ 2 lớn hơn, giá trị ABS thuần túy hoạt động khi biết sự khác biệt theo hướng tích cực.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.