How to compute totals in Excel / Spreadsheets when Carbone injects new lines?
Problem
Most spreadsheet reports need totals at the bottom of the table.
But the bottom of the table is dynamically pushed down by Carbone when the data is inserted, so you cannot use a formula =SUM(B4:B5)
because B5
is dynamic. It can be B88
or even B351
when Carbone has inserted the data.
Here are two solutions:
Use a dynamic Excel formula
Use the SUM
formula combined with INDIRECT
and ROW
. Here's how it works:
ROW()
: This function returns the row number of the cell where the formula is entered.INDIRECT("B4:B"&ROW()-1)
: This formula constructs a range reference that starts atB4
and extends up to the row just above where the formula is applied. The INDIRECT function is used to create a reference to a range of cells specified by a text string. The&
is used to concatenate the row number obtained with ROW()-1, thus forming the desired range reference as text.SUM(INDIRECT("B4:B" & ROW()-1))
: Finally, the SUM function adds up all the values in the range dynamically defined by the INDIRECT formula.
=SUM(INDIRECT(ADDRESS(1;COLUMN())&":"&ADDRESS(ROW()-1;COLUMN())))
Use Carbone aggregators
Carbone can also compute the total itself
{d.action[].time:aggSum:formatN}
formatN
formatter to convert numeric values to Excel numbers. Otherwise, Excel formula will not work.Extra tips
If you want to use your result elsewhere,
- first provide in your template a label (ex
TOTAL weeks
) on which you can build an excel formula withMATCH
- use the formula
MATCH("TOTAL weeks",A:A,0)
to find the relative position of our label in column A, - use
INDEX
function to combine the search step with a reference to the corresponding cell in column B
then you can perform any computation
exemple : =INDEX(B:B, MATCH("TOTAL weeks", A:A, 0))/4.345
Updated on: 04/05/2024
Thank you!