首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否在excel中将标量转换为任意长度的数组?

能否在excel中将标量转换为任意长度的数组?
EN

Stack Overflow用户
提问于 2013-11-20 19:55:29
回答 2查看 712关注 0票数 0

我这样做的原因是,我不必使用矩阵乘法,而可以使用和积。我可以用矩阵乘法来做这件事,但是我不想给我的同事解释这是什么以及如何去做。我需要对两个数组应用一个标量,并对其应用和积。问题是,由于标量长度为1,它打破了和积公式。公式如下所示:

代码语言:javascript
复制
=sumproduct(1/sumif(conditionals), array 2, array 3)

我想做的是根据其他两个数组的大小,缩放第一个数组,这是我的标量。我已经尝试过了,我认为这是行不通的,但它应该让我了解我想要实现的目标:

代码语言:javascript
复制
=sumproduct(rept(1/sumif(conditionals),count(array 2)), array 2, array 3)

这里的问题是rept函数返回一个字符串,我无法使用rept()或任何其他公式将其转换为该标量的1xN数组。我应该指出,我并不是要强制转换变量,但是如果有这样的方法,它可能会解决问题。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-20 21:27:58

你试过吗?

代码语言:javascript
复制
=sumproduct((1/sumif(conditionals))*'array 2'*'array 3')

另外,这在数学上不是和

代码语言:javascript
复制
=(1/sumif(conditionals))*sumproduct('array 2','array 3')
票数 2
EN

Stack Overflow用户

发布于 2013-11-20 21:35:58

下面的公式可以解决您的问题:

代码语言:javascript
复制
=SUMPRODUCT(
            ROW(INDIRECT("1:" & COUNT(array 2))) ^ 0 / SUMIF(conditionals),
            array 2,
            array 3
           )

这项工作如下:

首先获取数组2的元素数:

代码语言:javascript
复制
COUNT(array 2)

然后将其转换为“虚拟”范围引用(只有行):

代码语言:javascript
复制
INDIRECT("1:" & COUNT(array 2))

然后从这个虚拟范围引用中确定行号,其结果是{1,2,...,COUNT}

代码语言:javascript
复制
ROW(INDIRECT("1:" & COUNT(array 2)))

最后,通过将行号提高到幂0来转换行号:

代码语言:javascript
复制
ROW(INDIRECT("1:" & COUNT(array 2))) ^ 0

这为您提供了所需的带有{1,1,...,1}元素的数组COUNT,这些元素可以在SUMPRODUCT()函数中使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20105650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档