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 atB4and 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
INDEXfunction 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!
