Кто-нибудь подскажите пожалуйста как составить формулу на подсчет ячеек от пустой ячейки до пустой. Т.е. есть столбец с цифрами, с прочерками и пустыми ячейками. Надо в пустую ячейку вставить сумму всех цифр с учетом прочерков, расположенных выше этой ячейки но до ближайшей сверху пустой ячейки. В следующую пустую ячейку опять вставить сумму всех цифр с учетом прочерков, расположенных выше, и тд. Что касается прочерков - они учитываются, но не суммируются. Но если по сумме с учетом прочерков выходит 0, то в итоге должен стоять не 0, а прочерк. Пример в приложении, ячейки с результатом, который нужно получить по формуле выделены красным. Заранее спасибо.
Sub El()
Dim r As Range, x
For Each r In Columns(1).SpecialCells(xlCellTypeConstants).Areas
x = WorksheetFunction.Sum(r)
r.Cells(r.Count + 1) = IIf(x = 0, "-", x)
Next
End Sub
а без макроса можно? С макросом получится слишком тяжелый файл, т.к. есть еще специфические настройки. вчера нашла файл там формула, но только обратная и без условий см приложение
Рядом протяните формулу массива: =ЕСЛИ(A2=0;СУММ(ИНДЕКС($A$2:A2;СТРОКА()-1-ИНДЕКС(ЧАСТОТА(СТРОКА($A$2:$A$32);ЕСЛИ($A$2:$A$31=0;СТРОКА($A$2:$A$31)));СУММ(Ч(ЕПУСТО($A$2:A2))))):A2);A2)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Eleza24 написал: С макросом получится слишком тяжелый файл
Никто не заставляет держать макрос в файле. Если такую обработку надо выполнять с разными файлами, поместите макрос в Личную книгу макросов (PERSONAL.XLSB) и запускайте при любом открытом файле. Это ИМХО удобнее, чем многоэтажную формулу вставлять и протягивать. Если это разовая задача, можно скопировать этот же макрос в виде одной строки
Код
For Each r In Columns(1).SpecialCells(xlCellTypeConstants).Areas:x = WorksheetFunction.Sum(r):r.Cells(r.Count + 1) = IIf(x = 0, "-", x):Next
Спасибо всем конечно, но предложенные варианты не совсем соответствуют условию. В моем примере сумма должна стоять в том же столбце что и значения (красный цвет) и отсутствует условие - если сумма = 0, значение результата должно отображаться как "-", а не 0. Можно предложенные формулы как-нибудь модифицировать? Заранее спасибо.