Próbuję znaleźć różnicę między dwoma zestawami liczb. Niektóre liczby są dodatnie, niektóre ujemne.
Zastosowanie następującej formuły działa przez około 99% czasu:
=IF(I18<0,I18+R18,IF(I18>0,I18-R18))
Jednak kiedy I18
i R18
są liczbami ujemnymi, potrzebuję I18-R18
. Próbowałem wielu IF
AND
stwierdzeń, ale wydaje się, że nie mogę tego zrobić poprawnie. Mam nadzieję, że ktoś poprowadzi mnie we właściwym kierunku.
microsoft-excel
Dave
źródło
źródło
I18
zero.I18
i kiedyR18
liczby ujemne, potrzebujęI18-R18
” Czy na pewno masz na myśli to? Myślałem, że chcesz delty jako absolutnej różnicy. JeśliI18
jest-2
iR18
jest-1
, twój wynik będzie-1
. Nie chcesz liczby dodatniej we wszystkich przypadkach?=ABS(I18)-ABS(R18)
wytwarza pożądaną wydajność?A+B
wtedy, gdy zarówno A, jak i B są równe zero.Odpowiedzi:
Wygląda na to, że chcesz tylko różnicę (delta) między
I18
iR18
chcesz, aby zawsze była pozytywna?Ta formuła zrobi to:
=ABS(I18-R18)
Daje właściwą odpowiedź, czy
I18
jest pozytywna, negatywna czy zerowa.źródło
IF()
działało poprawnie. Pozostałe odpowiedzi dotyczyły zadanego pytania. Ale czasami obranie innej ścieżki szybciej doprowadzi Cię do właściwego miejsca.Zamiast sprawdzać argumenty pod kątem negatywności, sprawdź wynik.
źródło
I18>R18
Uprośćmy twój oryginalny kod:
Teraz mówisz, że gdy X <0 i Y <0, faktycznie chcesz, aby wynik był X - Y, a nie X + Y. OK.
To jest napisane.
Jak wspomniano powyżej, nie masz zerowego przypadku. Możesz być w stanie zmienić jeden z komparatorów LT / GT na LE / GE, po prostu dodając znak równości - w zależności od danych i logiki.
źródło
If Y<0 {A} Else {B}
ale A i B są identyczne. Czy jest literówka?Możesz skorzystać z poniższych:
Jedyną wadą, jaką widzę przy tym, jest to, co robisz w przypadku
I18 = 0
, gdy nie masz na to nic ustawionego.W każdym razie, jeśli chcesz dodać coś do tego wystąpienia, zobacz poniżej:
źródło
Nie wiedziałem o ABS. Miałem zamiar zasugerować
źródło
To zadziałało dla mnie -> JEŻELI (I (I18 <0, R18 <0), I18-R18, JEŻELI (I18 <0, ((R18-I18) * - 1), JEŻELI (I18> = 0, I18-R18 )))
Dotyczy to wszystkich scenariuszy: Zmienna A | Zmienna B + ve | + ve + ve | -ve -ve | + ve -ve | -ve
źródło
+
/-
) jest trywialna i pokazanie, że nic nie wyjaśnia odpowiedzi. Jeśli zamierzasz opublikować odpowiedź na pytanie tak niejasne jak to, przydatne jest wyjaśnienie, na jakie pytanie odpowiadasz. (2) Cokolwiek robisz, formuła wydaje się niepotrzebnie złożona. Pomocne byłoby wyjaśnienie, co robi. ……………………………………………… Proszę nie odpowiadać w komentarzach; edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.Właśnie natknąłem się na sytuację (mierzenie odczytów Lab w kolorze), w której nie potrzebuję po prostu różnicy między x i y, ale dodatnim lub ujemnym ruchem delta. Więc normalnie -5 minus -2 = -3, ale chęć pokazania, że delta faktycznie była w kierunku dodatnim -3, nie jest tym, czego szukam, więc:
= JEŻELI (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))
Mówiąc najprościej, jeśli drugi (nowszy) odczyt jest mniejszy, wiem, że wynikiem jest ruch ujemny (więc * -1) i przesunęłem się dalej w dół ujemnej strony osi. W przeciwnym razie, jeśli drugi odczyt jest większy, czysta wartość ABS działa, wiedząc, że różnica jest w kierunku dodatnim.
źródło