Формула Excel для создания пользовательского результата массива

0

У меня есть формула в Excel, которая содержит массив; {1,2,3} его использование можно увидеть на Я хотел бы генерировать его динамически, например, arrayfun (4) сгенерирует {1,2,3,4}. Я могу создать очень длинный массив с COLUMN (1: 1), но мне нужна формула, которая генерирует массив явной длины.

Конкретная формула, в которой я пытаюсь использовать это - ЛИНЕЙН, и пример ее использования можно найти на http://people.stfx.ca/bliengme/ExcelTips/Polynomial.htm

Mr Purple
источник
Итак, вы хотите взять существующий массив и добавить новые элементы в его конец как результат формулы?
Nate
Нет, я хочу иметь возможность динамически генерировать {1,2,3}, как требуется в формуле, с которой я связан.
Mr Purple

Ответы:

1

У вас есть правильная идея с COLUMN, но, возможно, проще в настройке было бы использовать ROW, Для вашего конкретного примера вы можете использовать следующее для генерации массива {1,2,3,4},

=ROW(1:4)
Excellll
источник
Спасибо, Исправление количества столбцов сработало так же, как в столбце (A: C), но переключение на строки не сработало. предположительно из-за его транспонированной природы. Поэтому я полагаю, что решение состоит в том, чтобы либо транспонировать решение для строк, либо использовать косвенные или некоторые из них, чтобы обеспечить динамическое изменение столбца (A: C)
Mr Purple
Согласно моему комментарию выше, использование индекса для генерации ссылки на столбец с колонкой для генерации массива сделало это. Поэтому я приму этот ответ и опубликую конкретное решение в моем вопросе.
Mr Purple
@MrPurple Если вы нашли свое собственное решение, вы должны опубликовать его как ответ, а не как изменение вашего вопроса. (Да, вы можете ответить на свой вопрос.) Если это решение подойдет вам, вы также должны пометить свой собственный ответ как правильный.
Excellll
1

Ответ в соответствии с @Excellll был формулой

=COLUMN(INDEX(1:1024,1,1):INDEX(1:1024,1,3))

или же

=TRANSPOSE(ROW(1:3))

Который может быть легко сделан динамичным.

Теперь я могу использовать LINEST для генерации полиномиальных коэффициентов в динамическом порядке, используя:

=LINEST(known_ys,known_xs^COLUMN(INDEX(1:1024,1,1):INDEX(1:1024,1,order)),TRUE,TRUE)

или же

=LINEST(known_ys,known_xs^TRANSPOSE(ROW(1:order)),TRUE,TRUE)

Где «known_ys» - это диапазон, содержащий мои значения y, «known_xs» - это диапазон, содержащий мои значения x, а «order» - это порядок, к которому я хочу применить мое полиномиальное соответствие.

Кроме того, я могу обернуть LINEST в функцию INDEX, чтобы извлечь любой конкретный коэффициент по желанию, например:

=INDEX(LINEST(known_ys,known_xs^TRANSPOSE(ROW(1:order)),TRUE,TRUE),1,3)

Чтобы вернуть только R²

Mr Purple
источник