Это один из способов сгенерировать набор чисел в соответствии со списком частот:
=ArrayFormula(vlookup(row(indirect("a1:a"&sum(D:D)))-1,{sumif(row(C:C),"<="&row(C:C),D:D)-D:D,C:C},2))
Затем, если вы хотите их рандомизировать:
=ArrayFormula(sort(vlookup(row(indirect("a1:a"&sum(D:D)))-1,{sumif(row(C:C),"<="&row(C:C),D:D)-D:D,C:C},2),randarray(sum(D:D)),1))
![enter image description here](https://i.stack.imgur.com/LJ4fw.png)
EDIT
Я мог бы сделать это более аккуратно, используя Sequence вместо row () и изменив условие в Sumif на «<»: </p>
=ArrayFormula(vlookup(sequence(sum(D:D),1,0),{sumif(row(C:C),"<"&row(C:C),D:D),C:C},2))
и
=ArrayFormula(sort(vlookup(sequence(sum(D:D),1,0),{sumif(row(C:C),"<"&row(C:C),D:D),C:C},2),randarray(sum(D:D)),1))