3

Я использую LibreOffice 5.1.4.2 Calc и мне нужно рассчитать внутреннюю норму прибыли для определенного платежа (скажем, в ячейке A1), определенное количество раз (скажем, 100).

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

=IRR(A1:A100)

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

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

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

3 ответа3

2

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

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

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

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

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

1

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

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

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

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

0

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

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

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

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

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

function repeatIrr( value, amount ) -> value

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .