Как создать массив значений в LibreOffice Calc?

Как создать массив значений в LibreOffice Calc?

я используюLibreOffice 5.1.4.2 Калькулятори нужно рассчитатьВнутренняя норма доходностиза определенную оплату (например, в ячейке A1), определенное количество раз (например, 100).

Если бы мне нужно было повторить значение 100 раз (скажем, в A1:A100), я мог бы сделать:

=IRR(A1:A100)

Но это кажется странным (а что, если 100 000 раз?).

Проблема в том, что функция IIRожидает«массив, содержащий значения».

Как передать IRRмассиву значение A1несколько 100раз?

решение1

Я думаю, вы просите Libreoffice Calc сделать то, что он сделать не может.

В LibreOffice Calc массив — это «связанный диапазон ячеек в электронной таблице, содержащий значения» (согласноСтатья помощиФункции массива). Существует такая вещь, как «встроенная константа массива», но она предназначена для помещения значений в массив. IRR()— это не функция массива, это однозначная функция, которая принимает массив в качестве аргумента.

Я думаю, что LibreOffice Calc хочет, чтобы вы выделили этим 100 (или 100 000) ячеек одно и то же значение.

Вы можете заполнить ячейки разными способами. Я бы поместил значение в первую ячейку, затем дал бы второй ячейке формулу, которая считывала бы из первой ячейки с абсолютной ссылкой, затем заполнил бы эту вторую ячейку 100 (или 100 000) раз, чтобы получить нужный мне массив. Все, что мне нужно изменить, это значение в первой ячейке, и оно распространится по всему массиву.

Если вы действительно хотите ввести краткую формулу для расчета внутренней нормы доходности для 100 000 платежей одинаковой суммы, возможно, LibreOffice не лучший инструмент для этой работы. Это электронная таблица. Язык программирования, как язык Python иnumpy.irr()функция, может работать лучше.

решение2

Да, можно записать массив прямо в формулу.
Calc называет это"константа встроенного массива".

Простой пример 3x2:

{1;2;3|"a";"b";"c"}.

Документация Calcесть полная информация...

решение3

Напишите функцию, которая создает повторяющийся массив на основе ячеек электронной таблицы.

Я не писал никакого кода для Calc, поэтому не знаком с используемым синтаксисом, но в псевдокоде:

function repeat( value, amount ) -> { value | value | value ... value } 

... затем вызовите этот код из IRR.

В качестве альтернативы создайте функцию, которая делает все:

function repeatIrr( value, amount ) -> value

... и вызовите это из электронной таблицы.

Связанный контент