SUMPRODUCT 命令在这个例子中是如何工作的?
How does the SUMPRODUCT command works in this example?
以下代码允许我在 Excel 中确定枢轴 table 中的不同值:
=SUMPRODUCT(($A$A:$A2=A2)*($B:$B2=B2))
另请参阅:Simple Pivot Table to Count Unique Values
代码运行完美。但是,有人可以帮助我了解这段代码的实际工作原理吗?
首先,我想你在这里做了一个类型,因为公式应该是:
=SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))
让我们把它分解成两部分:
- 首先,我们检查
A2
和 A2
之间的单元格,因此只有一个单元格,我们检查等于 A2
的单元格数。在这种情况下,输出应该是 1,因为您正在比较 A2
和 A2
。但是,您不限于将 A2
与 A2
进行比较。如果您选择了等于 A2
的 2 个单元格,结果将是 2.You 可以将任意数量的单元格与 A2 进行比较(替换 $ 后的字符进行调整)。
我们对第二个括号做同样的事情,除了枢轴值是 B2
.
- 之后,您需要了解函数 SUMPRODUCT 的作用。它对一系列数组的乘积值求和。例如,假设你在
A1
上有值 1,在 A2
上有 1,在 B1
上有 2,在 B2
上有 3,如果你使 SUMPRODUCT((A1:A2)*(B1:B2))
,你将获得(1*2) + (1*3) = 5
。因此,在您给我们的示例中,它将给出 (A2=A2)*(B2=B2) = 1
. 的总和
所以,它会输出(Ax,Bx)等于(A2,B2)的对数。使用 link,您可以看到,如果仅在第一行 select,函数将输出 1(因此 IF
将输出 1),但如果您 select 前 2 行,函数将输出 2,(因此 IF
将输出 0)。
我希望这对你有意义,因为我希望我在解释过程中没有犯任何错误。
你写:下面的代码允许我在 Excel
中确定枢轴 table 中的不同值
没有。单靠这个公式并不能做到这一点。继续阅读以了解其作用的解释。
公式中有错字。应该是
=SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))
看出区别了吗?
公式从第 2 行开始向下复制。在每一行中,$A$2 引用和 $B$2 引用将保持不变。 $ 符号使它们成为绝对引用。向下复制时,相对引用 $A2 和 A2 将更改其行号,因此在第 3 行中,A2 将更改为 A3,B2 将更改为 B3。下一行是A4和B4,依此类推。
您可能想要创建一个示例场景,其中的数据与您 link 的线程中的数据相似。然后使用公式功能区上的 "Evaluate Formula" 工具逐步查看计算的内容。该公式从内到外计算。假设公式已复制到第 5 行,我们现在正在查看
=SUMPRODUCT(($A:$A5=A5)*($B:$B5=B5))
($A:$A5=A5)
这个位比较A2到A5的所有单元格和A5中的值。结果是一个包含四个值的数组,要么是 true 要么是 false。下一位 ($B:$B5=B5)
也是 return 真值或假值数组。
这两个数组相乘,结果是一个包含 1 或 0 值的数组。每个数组具有相同数量的值。
第一个数组的第一个值将乘以第二个数组的第一个值。 (见红色箭头)
第一个数组的第二个值将乘以第二个数组的第二个值。 (见蓝色箭头)
等等。
True * True 将 return 1,其他所有将 return 0。乘法的结果是:
SumProduct 函数的本质是对乘法的结果(乘积)求和,这就是它的作用。
这个函数本身并没有做任何事情来在 Excel 中建立不同的值。在您 link 的线程中,Sumproduct 包装在 IF 语句中,这就是识别不同值的地方。
=IF(SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))>1,0,1)
说白了就是:如果上面已经出现了当前行A列和当前行B列的值的组合,return一个零,否则return一个1.
这标记了组合列 A 和 B 的不同值。
以下代码允许我在 Excel 中确定枢轴 table 中的不同值:
=SUMPRODUCT(($A$A:$A2=A2)*($B:$B2=B2))
另请参阅:Simple Pivot Table to Count Unique Values
代码运行完美。但是,有人可以帮助我了解这段代码的实际工作原理吗?
首先,我想你在这里做了一个类型,因为公式应该是:
=SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))
让我们把它分解成两部分:
- 首先,我们检查
A2
和A2
之间的单元格,因此只有一个单元格,我们检查等于A2
的单元格数。在这种情况下,输出应该是 1,因为您正在比较A2
和A2
。但是,您不限于将A2
与A2
进行比较。如果您选择了等于A2
的 2 个单元格,结果将是 2.You 可以将任意数量的单元格与 A2 进行比较(替换 $ 后的字符进行调整)。 我们对第二个括号做同样的事情,除了枢轴值是B2
. - 之后,您需要了解函数 SUMPRODUCT 的作用。它对一系列数组的乘积值求和。例如,假设你在
A1
上有值 1,在A2
上有 1,在B1
上有 2,在B2
上有 3,如果你使SUMPRODUCT((A1:A2)*(B1:B2))
,你将获得(1*2) + (1*3) = 5
。因此,在您给我们的示例中,它将给出(A2=A2)*(B2=B2) = 1
. 的总和
所以,它会输出(Ax,Bx)等于(A2,B2)的对数。使用 link,您可以看到,如果仅在第一行 select,函数将输出 1(因此 IF
将输出 1),但如果您 select 前 2 行,函数将输出 2,(因此 IF
将输出 0)。
我希望这对你有意义,因为我希望我在解释过程中没有犯任何错误。
你写:下面的代码允许我在 Excel
中确定枢轴 table 中的不同值没有。单靠这个公式并不能做到这一点。继续阅读以了解其作用的解释。
公式中有错字。应该是
=SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))
看出区别了吗?
公式从第 2 行开始向下复制。在每一行中,$A$2 引用和 $B$2 引用将保持不变。 $ 符号使它们成为绝对引用。向下复制时,相对引用 $A2 和 A2 将更改其行号,因此在第 3 行中,A2 将更改为 A3,B2 将更改为 B3。下一行是A4和B4,依此类推。
您可能想要创建一个示例场景,其中的数据与您 link 的线程中的数据相似。然后使用公式功能区上的 "Evaluate Formula" 工具逐步查看计算的内容。该公式从内到外计算。假设公式已复制到第 5 行,我们现在正在查看
=SUMPRODUCT(($A:$A5=A5)*($B:$B5=B5))
($A:$A5=A5)
这个位比较A2到A5的所有单元格和A5中的值。结果是一个包含四个值的数组,要么是 true 要么是 false。下一位 ($B:$B5=B5)
也是 return 真值或假值数组。
这两个数组相乘,结果是一个包含 1 或 0 值的数组。每个数组具有相同数量的值。
第一个数组的第一个值将乘以第二个数组的第一个值。 (见红色箭头)
第一个数组的第二个值将乘以第二个数组的第二个值。 (见蓝色箭头)
等等。
True * True 将 return 1,其他所有将 return 0。乘法的结果是:
SumProduct 函数的本质是对乘法的结果(乘积)求和,这就是它的作用。
这个函数本身并没有做任何事情来在 Excel 中建立不同的值。在您 link 的线程中,Sumproduct 包装在 IF 语句中,这就是识别不同值的地方。
=IF(SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))>1,0,1)
说白了就是:如果上面已经出现了当前行A列和当前行B列的值的组合,return一个零,否则return一个1.
这标记了组合列 A 和 B 的不同值。