Расширенное вычитание между столбцами в одной строке в области
Я хочу рассчитать стоимость транзакции, поэтому я имею в виду, что у меня есть разные счета в столбце "А", и для каждой транзакции у меня есть столбец типа "В".
Транзакции показывают новое значение после транзакции для двух учетных записей.
И мне нужна универсальная функция для расчета "стоимости транзакции", что-то вроде Ai - Bi … Ai+1 - Bi+1 …
или как функция (псевдокод), что-то вроде этого:
int res = 0;
foreach (int i = 1; i < 4 (rows); i++) {
if (Bi != null && Ai > Bi) {
res = Ai - Bi
}
}
Пример:
A B (transactions)
------------------------------------------------------------
1 | $ 100 | |
------------------------------------------------------------
2 | | |
------------------------------------------------------------
3 | $ 200 | $ 150 (now, after transaction) |
------------------------------------------------------------
4 | $ 300 | $ 350 (now, after transaction) |
------------------------------------------------------------
5 | sum(A1:A4) | (A1-B1)+(A2-B2)+(A3-B3)… (transaction value)|
------------------------------------------------------------
=> | $ 600 | $ 50 |
------------------------------------------------------------
Поэтому я перевел 50 долларов со счета А3 на А4.
Мне в основном нужна логика
Любая помощь очень ценится:)
1 ответ
Две формулы:
SUMPRODUCT:
=SUMPRODUCT((B1:B4<A1:A4)*(B1:B4<>"")*(A1:A4-B1:B4))
Или эта формула массива:
=SUM(IF((B1:B4<A1:A4)*(B1:B4<>""),(A1:A4-B1:B4)))
Будучи формулой массива, она должна быть подтверждена с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования. Если все сделано правильно, то Excel поставит {}
вокруг формулы.
Если ячейки заполнены формулами, которые возвращают ""
затем используйте второе в качестве пустой строки, что приведет к ошибке с формулой SUMPRODUCT. Если они действительно пусты, то любой из них будет работать.