Как использовать ARRAYFORMULA для работы с массивом массивов - PullRequest
0 голосов
/ 07 июня 2018

В настоящее время я работаю над формулой, но не могу заставить ее работать так, как намереваюсь.

Столбец A электронной таблицы выглядит примерно так:

| A |
| B |
| C |
| D |
| E |

И я пытаюсь получить такой вывод:

| A |
| A | B |
| A | B | C |
| A | B | C | D |
| A | B | C | D | E |

Поэтому я попытался использовать смещение, чтобы перейти от первой строки к текущей строке для каждой из моих строк.

=ARRAYFORMULA(TRANSPOSE(OFFSET(A1;0;0;ROW(A1:A5)))

Но поскольку ROW(A1:A5) не возвращает массив, ячейка была просто | A |
Поэтому я попытался добавить ARRAYFORMULA вокруг ROW(A1:A5), и я получил следующее:

| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

Что мне нужно!Но если я добавлю его к исходной функции, я все равно получу только | A |

Есть ли способ для меня "заставить" ARRAYFORMULA работать на A1:A5, чтобы я получил требуемый вывод?

Дополнительные данные

  • Я знаю, что это будет проще сделать с помощью сценария, но решение для сценария не то, что я ищу.Я пытаюсь понять, почему он это делает и как его предотвратить.
  • Эта формула предназначена для использования внутри другой, поэтому мне нужно, чтобы она была только 1 формулой, я не могу использовать крест для расширенияэто.
  • Я не возражаю, если решение не показывается (если массив наложен на пример).
  • Я сделал демо здесь .
  • Я также пытался использовать INDIRECT вместо OFFSET, чтобы получить диапазоны, и у меня были те же результаты.

Ответы [ 2 ]

0 голосов
/ 11 августа 2018

Если ваши данные находятся в A1:A8, введите эту формулу в C1, а затем скопируйте ее в C2:C8:

= TRANSPOSE ( ARRAY_CONSTRAIN( $A$1:$A$8 , 1 + ROW() - ROW( $C$1 ) , 1 + COLUMN() - COLUMN( $C$1 ) ))

enter image description here

0 голосов
/ 08 июня 2018

Пожалуйста, попробуйте где-нибудь в строке 1, предполагая, что именно там находится ваш первый A, и скопируйте его так, чтобы он подходил:

=SPLIT(JOIN("|",A$1:A1),"|")

(в качестве формулы массива, если необходимо.)

...