最初のセルに値が指定されている列 (ProfitSheet を除く各シート) を検索し (常に存在し、シートごとに 1 つだけ)、列を別のシートにコピーする必要があります。つまり、そのようなもの:
for i := 2 to MsExcel.Sheets.Count do // sheets loop. Sheets[1] — ProfitSheet
begin
MsExcel.Sheets[i].Select;
for j := 1 to 15 do // columns loop to find "Profit column"
if MsExcel.Cells[1, j].Text = 'Profit' then
// copy j column, usually I use something like
// VariantArr := MsExcel.Range[MsExcel.Cells[1, j], MsExcel.Cells[299, j]].Value
// and then
// Range := MsExcel.Range[MsExcel.Cells[1,i], MsExcel.Cells[299, i]];
// Range.Value := VariantArr;
// but I don't know how to find last column's cell (where 299)
MsExcel.Sheets['ProfitSheet'].Select;
// copy col to the i column of ProfitSheet
end;