DataNitro中的用户定义数组公式

时间:2016-05-29 03:14:23

标签: datanitro

我创建了一个python函数来取代矩阵,并使用DataNitro将其作为用户定义函数导入Excel。但是,当我使用这个公式时,我将结果作为一个单元格中的python列表。

是否可以使用与MMULT或MINVERSE类似的DataNitro为excel创建数组公式?

下面是我的python代码和excel表的快照:

  

functions.py

import numpy as np

def mat_expo(x,n):
    if(n==2):
        return mat_mult(x,x)
    else:
        return mat_mult(x,mat_expo(x,n-1))

def mat_mult(x,y):
    return np.dot(x,y)
  

Excel表格:

my excel sheet

1 个答案:

答案 0 :(得分:0)

无法从一个DataNitro函数返回多个单元格。您可以获得如下相同的结果:

def mat_expo_entry(x, n, i, j):
    return mat_expo(x, n)[i][j]

在单元格=mat_expo_entry($B$2:$D$4,3,ROW()-7,COLUMN()-2)的示例电子表格中使用B7:D9正确打印输出。

如果这很慢,您可以使用Python的内置lru缓存存储答案:

from functools32 import lru_cache # use 'functools' in Python3

@lru_cache
def mat_expo(x,n):
if(n==2):
    return mat_mult(x,x)
else:
    return mat_mult(x,mat_expo(x,n-1))

或者,您可以使用DataNitro脚本将结果直接打印到工作表。