Calculate sum for a column dynamically?


#1

Hi,

Please find the attached excel sheet(template6.zip (9.7 KB)).
I want to calculate the Sum and Display it in the third row
right after Total column. But i am not sure how many records user may add in this case.
It may be 10 or 3000 not sure. Also, in between blank cells may come as well.

For ex: Year 2070 will have 10 values and 2065 will have 3000 values.
I have entered some sample data for those two columns for your reference.

So hope, here i need to write a sum formula/macro, which calculates dynamically, as and when he adds a value in a cell for a particular column.

I have referred the below link and still not able to find a way.

Please suggest a solution as soon as you can.

Regards,
Prathap


#2

@PrathapSV,
You may give a try to the following sample code and share the feedback.

Workbook workbook = new Workbook(path + "template6.xlsm");
//Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
//Iterate all the data columns
for (int c = 4; c <= worksheet.Cells.MaxDataColumn; c++)
{
    //Find the last cell of the column
    Cell endCellInColumn = worksheet.Cells.EndCellInColumn((short)c);
    if (endCellInColumn.Row == 1)    continue;
    //Add SUM formula in third row of the column
    string colName = CellsHelper.ColumnIndexToName(endCellInColumn.Column);
    string sumFormula = string.Format("=Sum({0}4:{0}{1})", colName, endCellInColumn.Row + 1);
    Cell sumCell = worksheet.Cells[colName + "3"];
    sumCell.Formula = sumFormula;
    //Make the sum cell bold
    Aspose.Cells.Style style = sumCell.GetStyle();
    style.Font.IsBold = true;
    style.Pattern = Aspose.Cells.BackgroundType.Solid;
    style.Font.ArgbColor = System.Drawing.Color.Black.ToArgb();
    sumCell.SetStyle(style);
}
//Save the workbook
workbook.Save(path + "output_peyton.xlsx");