2016-09-23 4 views
1

У меня есть таблица, где у меня есть данные с банковского счета. Каждая банковская транзакция имеет дату и указание, если эта транзакция уже выполнена или если она только ожидается. Когда это уже сделано, оно должно быть добавлено к текущему балансу. Если нет, то общий баланс до даты должен быть пустым. Мне нужны Автофильтры данных, так что я могу фильтровать и заказать его в зависимости от даты и других условий, поэтому я использую эту формулу:Сумма выше клеток, игнорирующих пробелы

=IF(D3="Y";B3+INDIRECT(ADDRESS(ROW()-1;COLUMN()));"") 

Проблема здесь состоит в том, что, когда вышеуказанная ячейка пуста, общей sum сбрасывается и начинается с значения этой транзакции. Мне нужна формула, которая игнорирует верхние пустые ячейки и суммирует все ячейки выше, которые не являются пустыми, плюс сумма этой транзакции.

Кроме того, как только я сменил «N» в столбце «Готово» на «Y», мне нужна формула для обновления и отображения правильного баланса.

делюсь пример листа для лучшего понимания https://docs.google.com/spreadsheets/d/1_gk0YaziUhOZfRbrlfHizMrVu6OT7njIaTUyQaE6Lbs/edit?usp=sharing

ответ

1

ОК Я ДУМАЮ, ЧТО Я понимаю, о чем идет речь - пожалуйста, дайте мне знать, если я запутался, но я добавил пример на вашем листе ... в основном то, что я закончил, включало одно из ваших условностей, но затем также добавив еще одну функцию, чтобы исключить пустые строки путем filter, index и counta он выглядит более сложным, чем это, потому что я вложенными все это обратно в одну формулу:

=IF(I3="Y";sum(G3;index(filter(indirect("F2:"&address(row()-1;column();4));ISNUMBER(indirect("F2:"&address(row()-1;column();4))));counta(filter(indirect("F2:"&address(row()-1;column();4));ISNUMBER(indirect("F2:"&address(row()-1;column();4)))))););) 
  • для работы его изнутри - способ, которым я исключаю пустые строки, - это использовать FILTER, чтобы получить все строки из первой строки со значением (как A2 в y наш пример) и используя INDIRECT и ADDRESS, чтобы закончить массив, я хочу включить ровно одну ячейку над текущей ячейкой.

  • Затем я использую условие, что диапазон, который я построил, имеет в нем числовое значение, поэтому исключая пробелы.

  • Для того чтобы получить последнее доступное значение, я использую COUNTA, чтобы узнать общее число строк в фильтре, затем обернуть формулу с INDEX использовать значение COUNTA в качестве строки для возврата (который автоматически является последней строки доступны выше текущей ячейки)

enter image description here

+0

Большое спасибо Aurielle !! Это именно то, что мне нужно. Я изучу формулу и адаптирую ее к реальной таблице. Я все еще участвую, и я думаю, что эта формула пригодится в других электронных таблицах. Еще раз спасибо. – Kiame

1

Попробуйте это в A3 и скопируйте:

=IF(D3="Y";B3+INDIRECT(ADDRESS(ROW()-1;COLUMN()));A2+0) 

Если вы хотите, чтобы отобразить «N» строки, как пустой, добавить столбец (B) заполнить заголовок и стартовый номер (5000), а затем поместить его в B3:

=if(E3="N";"";A3) 

Скопируйте его вниз, а затем скрыть столбец А.

+0

Я пытался, и кажется, что это не бросает #VALUE! когда я переупорядочиваю (как это было в моих предыдущих испытаниях), что хорошо. Но я предпочел бы, чтобы ячейка оставалась пустой, когда транзакция ожидалась, но еще не выполнена. – Kiame

Смежные вопросы