Excel – 了解SUMPRODUCT公式
我有这个Excel的公式,有人创造了没有文件,我正在努力去理解它。
=SUMPRODUCT(-MID(TEXT(MID(TEXT(F2,REPT(0,15)),ROW(INDIRECT("1:15")),1)*{2;1;2;1;2;1;2;1;2;1;2;1;2;1;2},"00"),{1,2},1))
它看起来像从另一个数字创build一个“随机”数字。 有几个关键的东西我徘徊着:
*为什么有一个数组( {1,2}
)给MID()
函数?
*因为有一个SUMPRODUCT()
,它需要一个数组,我假设-MID()
函数的结果是某种数组,我怎么看它是什么?
*数组{2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2}是多重的呢?
* INDIRECT()
函数似乎总是返回1?
任何帮助将appriciated。
在EXCEL中有一个名为Evaluate Formula的函数,这是一步步检查公式的好工具。
假设F2是123
-
REPT(0,15)
生成一个15“0”的string,即
"000000000000000"
-
TEXT(F2,[1])
将F2转换为15个字符的string。 例如。
123 > "000000000000123"
-
ROW(INDIRECT("1:15"))
返回数组
{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}
-
MID([2],[3],1)
将[2]分隔成一个数组,每个元素都是一个char
{"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"1";"2";"3"}
-
[4]*{2;1;2;1;2;1;2;1;2;1;2;1;2;1;2}
由于
{A;B} * {C;D} = {A*C;B*D}
{"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"1";"2";"3"}*{2;1;2;1;2;1;2;1;2;1;2;1;2;1;2} ={0*2;0*1;0*2;....}={0;0;0;0;0;0;0;0;0;0;0;0;2;2;6}
-
TEXT([5],"00")
通过在前面添加“0”,将数组中的元素转换为两个字符。 数组变为
{"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"02";"02";"06"}
-
MID([6],{1,2},1)
请注意,{A,B}和{A; B}是不同的。 {A,B}是1行2列的数组; {A; B}是一个2行1列的数组。
在这个公式中,你可以想象做两次MID,第一次使用1作为第二个参数,第二次使用2。
结果是一个二维数组:
{"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","0";"0","2";"0","2";"0","6"}
-
SUMPRODUCT(-[7])
[7]之前的减号将强制数组中的所有元素转换为符号相反的数字。 在这个例子中,它总和为
0+0+0+...+(-2)+0+(-2)+0+(-6) = -10