Для того, чтобы нумерация строк в таблице выполнялась автоматически, следует выполнить несколько простых действий: 1. Выделяем ячейки, в которых нам необходима нумерация, в блок.
2. Переходим на ленту меню Главная, в область Абзац. 3. Выбираем создание нумерованного списка (1. 2. 3. …) при кнопки Нумерация 
4. Получаем таблицу со столбцом, в котором нумерация строк будет выполняться автоматически при удалении или добавлении строк в таблицу.
Можно сказать, что мы превратили столбец № п/п в обыкновенный нумерованый список, который будет автоматически расширяться или уменьшаться по количеству строк в таблице. При этом нумерация строк будет выполняться автоматически.
PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018 Внимание! Если программа не работает, обновите версию!
procedure Preobraz(var Stroka:string); begin var bq:=new Queue<(integer,integer)>; foreach var m in Stroka.Matches('\s+') do bq.Enqueue((m.Index,m.Length)); var wq:=new Queue<(integer,string)>; foreach var m in Stroka.Matches('\S+') do if m.Value.Any(t->t in ['0'..'9']) then wq.Enqueue((m.Index,'')) else wq.Enqueue((m.Index,m.Value)); Stroka:=''; var pbi,pwi:integer; while (bq.Count>0) and (wq.Count>0) do begin (pbi,pwi):=(bq.Peek[0],wq.Peek[0]); if pbi<pwi then begin Stroka:=Stroka+bq.Peek[1]*' '; bq.Dequeue end else begin Stroka:=Stroka+wq.Peek[1]; wq.Dequeue end end; while bq.Count>0 do begin Stroka:=Stroka+bq.Peek[1]*' '; bq.Dequeue end; while wq.Count>0 do begin Stroka:=Stroka+wq.Peek[1]; wq.Dequeue end end;
begin var s:=ReadlnString; Preobraz(s); s:='<'+s+'>'; // чтобы было видно, как работает s.Println end.
1. Выделяем ячейки, в которых нам необходима нумерация, в блок.
2. Переходим на ленту меню Главная, в область Абзац.
3. Выбираем создание нумерованного списка (1. 2. 3. …) при кнопки Нумерация 
4. Получаем таблицу со столбцом, в котором нумерация строк будет выполняться автоматически при удалении или добавлении строк в таблицу.
Можно сказать, что мы превратили столбец № п/п в обыкновенный нумерованый список, который будет автоматически расширяться или уменьшаться по количеству строк в таблице. При этом нумерация строк будет выполняться автоматически.
Внимание! Если программа не работает, обновите версию!
procedure Preobraz(var Stroka:string);
begin
var bq:=new Queue<(integer,integer)>;
foreach var m in Stroka.Matches('\s+') do
bq.Enqueue((m.Index,m.Length));
var wq:=new Queue<(integer,string)>;
foreach var m in Stroka.Matches('\S+') do
if m.Value.Any(t->t in ['0'..'9']) then wq.Enqueue((m.Index,''))
else wq.Enqueue((m.Index,m.Value));
Stroka:='';
var pbi,pwi:integer;
while (bq.Count>0) and (wq.Count>0) do begin
(pbi,pwi):=(bq.Peek[0],wq.Peek[0]);
if pbi<pwi then begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end
else begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
while bq.Count>0 do begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end;
while wq.Count>0 do begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
begin
var s:=ReadlnString;
Preobraz(s);
s:='<'+s+'>'; // чтобы было видно, как работает
s.Println
end.