Автоматическое заполнение c таблицы указанными номерами и их количеством вхождений - PullRequest
1 голос
/ 07 мая 2020

Я с трудом пытаюсь понять, как заставить Google Spreadsheet генерировать ряд чисел, отвечающих определенным критериям.

Например:

У меня есть столбец «A» с 50 строками. Теперь мне нужно заполнить эти строки (или ячейки, поскольку это всего лишь один столбец) набором чисел, который состоит из:

  • «1» - 15 случаев
  • «2» - 10 вхождений
  • «3» - 20 вхождений
  • «4» - 5 вхождений

Числа вхождений вводятся вручную в другую ячейку за моей колонкой. Модификация вхождений автоматически изменит распределение чисел в диапазоне A1-A50.

Числа не нужно сортировать, их можно распределить случайным образом (даже лучше!).

Я представляю, как поставить формула в «A1», которая генерирует числа в еще 50 ячейках ниже. Возможно, ARRAYFORMULA как-нибудь сработает. Кто-нибудь может помочь советом?

1 Ответ

2 голосов
/ 08 мая 2020

Это один из способов сгенерировать набор чисел в соответствии со списком частот:

=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

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))
...