こんにちは
空欄を0扱いにしてよいなら
dt.AsEnumerable.GroupBy(Function(r) r("果物").ToString()).Select(Function(g) dt.Clone.LoadDataRow({cobj(g.Key)}.Concat(dt.Columns.Cast(Of DataColumn).Skip(1).Select(Function(dc) cobj(g.Sum(Function(r) if(Int32.TryParse(r(dc.ColumnName).ToString, new int32),CInt(r(dc.ColumnName).ToString),0))))).ToArray,False)).CopyToDataTable()
になります。ただし上記はシート上0と表示されます。0の部分を空欄にする必要ありますでしょうか?