var
cell: _Cell;
range: _Range;
col_,row_,n_:integer;
cell_1,cell_2:string;
begin
col_:=1;
row_:=2;
n_:=0;
repeat
n_:=n_+1;
cell:=Grid1.Cell(row_,col_);
cell_1:=cell.Text;
cell:=Grid1.Cell(row_+n_,col_);
cell_2:=cell.Text;
if cell_1<>cell_2 then
begin
range := Grid1.Range(row_,col_,row_+n_-1,col_);
range.Merge();
Grid1.InsertRow(row_+n_,1);
row_:=row_+n_+1;
n_:=0;
end;
until row_+n_=Grid1.Rows-1;
range := Grid1.Range(row_,col_,row_+n_,col_);
range.Merge();
数据量大的话合并速度很慢,目前没找到别的办法。