计算同一列中的单元格之间相同文本值的标准偏差

最近几天我一直试图在Excel中创build一个macros,它可以计算出标准偏差,这个标准偏差将从列A中的不同单元格之间的相同文本值的列B取值,并将结果提供给列C中相应的单元格。在我的表格在列A中有许多不同的文本值,在列B中有相应的值。我想从列A中的相应同一文本的第一行到最后一行的列B的所有值计算这些值的标准差,并显示导致列C

例如,当它从第一个单元格(aass)开始时,那么它必须计算所有的aass ,然后从B列的相应单元格中取值,然后计算标准偏差。 请帮助我,我很乐意听到你们的声音。 我正在试图展示我的工作表,如下所示:

 column A column B column C text value result(standard deviation) aass 112 35.16 aadd 243 12.9 ffdd 523 108.55 aass 198 35.16 aadd 252 12.9 aass 136 35.16 ffdd 342 108.55 ffdd 312 108.55 aadd 222 12.9 aadd 255 12.9 ffdd 322 108.55 aass 112 35.16 jjhgf 487 25.8 pouwe 565 6 jjhgf 451 25.8 jjhgf 424 25.8 qwert 643 0 pouwe 553 5 qwert 643 0 ..... .... ... ..... .... ... 

我会告诉你我的意思是一个带有结构化引用的表。 我复制了textvalue列的数据。 我还添加了标题: Result到单元格C1

然后,我从“插入”function区中select“表格”选项(在“表格”选项卡上)

插入表格

然后我在C2input这个公式作为一个数组公式,通过按住Ctrl + Shift同时按Enter来确认它

 =STDEVP(IF(Table1[[#This Row],[text]]=[text],[value],"")) 

Excel自动将该公式复制到最后一行并生成请求的结果。 如果你现在添加一行,表将会扩展(包括公式)。 您也可以添加具有不同公式的列。

在上面的公式中, Table1[[#This Row],[text]]仅在包含公式的行上引用文本列的上下文,而[text]本身引用整个文本列; [value]指整个值列。

自动扩展和使用实际列标签的能力是Excel表格和结构化引用的理想function。 这与具有dynamic命名范围类似,但更容易实现。

在这里输入图像说明

这是我没有使用VBA的。 这是一个数组公式(使用Ctrl + Shift + Enterinput ),它位于单元格C1中:

 =STDEV(IF($A$1:$A$9=A1,$B$1:$B$9)) 

(在我的示例文件中,我只有9行数据。)

在较新版本的Excel中,您可以使用这个:

 =STDEV.S(IF($A$1:$A$9=A1,$B$1:$B$9)) 

对于整个人口使用这个:

 =STDEVP(IF($A$1:$A$9=A1,$B$1:$B$9)) 

要么

 =STDEV.P(IF($A$1:$A$9=A1,$B$1:$B$9)) 

以下版本将会非常慢:

=STDEV(IF(A:A=A1,B:B))=STDEV.S(IF(A:A=A1,B:B))

=STDEVP(IF(A:A=A1,B:B))=STDEV.P(IF(A:A=A1,B:B))

在这里输入图像说明