El problema parece estar en que DataGridAgrupado no está inicializado y tiene 0 filas.
Luego FilaActual = 0
En la siguiente linea le dices que guarde en la linea -1 (FilaActual-1) un valor.
Código Delphi
[-]
filaactual := DataGridagrupado.RowCount;
DataGridagrupado.Row := filaactual;
DataGridagrupado.Cells[0,filaactual-1] := DataGrid.Cells[0,i];
Quizás deberías mover la línea que inserta una nueva línea al principio.
Código Delphi
[-]
for i := 1 to (DataGrid.RowCount-1) do
begin
DataGrid.Row := i; If Trim(DataGrid.cells[0,i]) <> '' then
begin
If Trim(DataGrid.cells[0,i]) <> Trim(romp) then
begin
DataGridagrupado.AddRow;
filaactual := DataGridagrupado.RowCount;
DataGridagrupado.Row := filaactual;
DataGridagrupado.Cells[0,filaactual-1] := DataGrid.Cells[0,i];
DataGridagrupado.Cells[1,filaactual-1] := DataGrid.Cells[1,i];
DataGridagrupado.Cells[2,filaactual-1] := FloatToStr(total);