Excel - 了解SUMPRODUCT公式

时间:2017-10-13 04:25:35

标签: excel excel-formula

我有这个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))

看起来它会创建一个"随机"另一个数字的数字。 我正在努力解决的一些关键问题:
*为什么有{1,2}函数的数组(MID())? *因为有SUMPRODUCT(),需要一个数组,我假设-MID()函数的结果是某种数组,我怎么看它是什么?
*数组{2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2; 1; 2}的乘法是什么?
* INDIRECT()函数似乎总是返回1?

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:3)

EXCEL中有一个名为评估公式的函数,这是一个逐步检查公式的好工具。

假设F2​​为123

  1. REPT(0,15)

    生成一个包含15" 0"的字符串,即"000000000000000"

  2. TEXT(F2,[1])

    将F2转换为包含15个字符的字符串。例如。 123 > "000000000000123"

  3. ROW(INDIRECT("1:15"))

    返回数组{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}

  4. MID([2],[3],1)

    将[2]分隔成一个数组,每个元素都是一个char {"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"0";"1";"2";"3"}

  5. [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}

  6. TEXT([5],"00")

    通过添加" 0"将数组中的元素转换为两个char;在前面。数组转到{"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"00";"02";"02";"06"}

  7. 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"}

  8. SUMPRODUCT(-[7])

    [7]之前的减号将强制数组中的所有元素转换为符号相反的数字。 在此示例中,它汇总了0+0+0+...+(-2)+0+(-2)+0+(-6) = -10