Есть ли хороший совокупный эквивалент для Google Sheets с большой функцией? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь написать простой рандомизатор на основе базы данных для случайного объединения данных. Это отлично работает в Excel, но не в Google Sheets, потому что нет aggregat

Я уже пробовал LARGE и MAX, но тогда он не рандомизирован, а с SUBTOTAL он не работает. Я думал, что это также может быть основано на ROW, но, возможно, у меня неправильная концепция.

Код в Excel такой (я использую немецкую версию Excel, но это должен быть английский эквивалент)

=TEXTJOIN(" ";TRUE;INDIRECT("A"&ROUNDUP(RAND()*AGGREGAT(14;4;(A:A<>"")*ROW(A:A);1);0));INDIRECT("B"&ROUNDUP(RAND()*AGGREGAT(14;4;(B:B<>"")*ROW(B:B);1);0));INDIRECT("C"&ROUNDUP(RAND()*AGGREGAT(14;4;(C:C<>"")*ROW(C:C);1);0)))

Как я уже упоминал, нет aggregat, и другие решения, которые я нашел, не сработали для меня.

1 Ответ

0 голосов
/ 24 мая 2019

в Google Sheets существует несколько формул, которые могут имитировать AGGREGATE, например QUERY, FILTER, VLOOKUP, HLOOKUP, LOOKUP, INDEX / MATCH и зависит отЗадача, которая из перечисленных подходит лучше всего.


=INDEX(INDIRECT("A1:A"&COUNTA(A1:A)); RANDBETWEEN(1; COUNTA(A1:A)))

0


=INDEX({INDIRECT("A1:A"&COUNTA(A1:A))\
        INDIRECT("B1:B"&COUNTA(B1:B))\
        INDIRECT("C1:C"&COUNTA(C1:C))}; RANDBETWEEN(1; COUNTA(A1:A)))

0


={INDEX(INDIRECT("A1:A"&COUNTA(A1:A)); RANDBETWEEN(1; COUNTA(A1:A)))\
  INDEX(INDIRECT("B1:B"&COUNTA(B1:B)); RANDBETWEEN(1; COUNTA(B1:B)))\
  INDEX(INDIRECT("C1:C"&COUNTA(C1:C)); RANDBETWEEN(1; COUNTA(C1:C)))}

3


=INDEX({INDIRECT("A1:A"&COUNTA(A1:A));
            INDIRECT("B1:B"&COUNTA(B1:B));
            INDIRECT("C1:C"&COUNTA(C1:C))}; RANDBETWEEN(1; COUNTA(A1:C)))

4


=JOIN(" "; {PROPER(
 INDEX(INDIRECT("A1:A"&COUNTA(A1:A)); RANDBETWEEN(1; COUNTA(A1:A))))\
 INDEX(INDIRECT("B1:B"&COUNTA(B1:B)); RANDBETWEEN(1; COUNTA(B1:B)))\
 INDEX(INDIRECT("C1:C"&COUNTA(C1:C)); RANDBETWEEN(1; COUNTA(C1:C)))})&"."

0

...