Делаете так:
1. Увеличиваете количество строк на 1. Последняя строка будет содержать итоги всех столбцов.
2. Делаете два цикла. Первый обходит столбцы, второй строки. Во втором цикле накапливаете сумму в последней ячейке данного столбца. Никаких промежуточных переменных не надо.
А вот собственно реализация:
Код:
StringGrid1.RowCount := StringGrid1.RowCount + 1;
for Col := 0 to StringGrid1.ColCount-1
do begin
StringGrid1.Cells[Col,StringGrid1.RowCount-1] := '0';
for Row := 0 to StringGrid1.RowCount-2
do StringGrid1.Cells[Col,StringGrid1.RowCount-1] := Format('%6.2f',[StrToFloat(StringGrid1.Cells[Col,StringGrid1.RowCount-1]) + StrToFloat(StringGrid1.Cells[Col,Row])]);
end;