excel结合if语句和stdev

时间:2018-08-20 01:32:25

标签: excel excel-formula

问题:给定交易列表,我必须按类型以及所有交易生成箱形图。

背景:我正在使用Excel 2016。

我有一张桌子,上面有被审计方提供的数据。

我必须创建一个Excel工作表,该工作表将允许我生成类似于Peltier使用的方法(https://peltiertech.com/excel-box-and-whisker-diagrams-box-plots/)的箱形图所需的值,而无需修改被审核方提供的数据(不进行排序,不进行任何修改)受审核方提供了数据,以防审核被用于行政程序中

Image of Faux Transaction File

文件显示:

  • 截止日期(A列);
  • 属性地址(B列);
  • 销售价格(C列);
  • 交易类型(D列):上市,出售或双重代理[使用数据验证和下拉列表控制条目]
  • 上市代理人(E栏);和
  • 销售代理商(F列)。

我已经命名了以下命名字段,以简单地输入公式并使审核公式更容易:

  • 截止日期
  • 销售价格
  • TransactionType
  • ListingAgent
  • SellingAgent

我需要为所有交易以及按交易生成以下Salesprice值:平均值,标准偏差,最小值,第一四分位数,中位数,第三四分位数,最大值和四分位数范围(第一四分位数与第三四分位数之间的差)类型类别(列表,销售和双重代理)。

获得所有交易所需的价值相对容易。我的问题是何时必须按事务类型细分事物。

我目前正在使用以下公式来命名定义动态字段的范围:

ClosingDate = Offset($A$2,0,0,Counta($A:$A),1)
SalesPrice = Offset($C$2,0,0,Counta($C:$C),1)
TransactionType = Offset($D$2,0,0,Counta($D:$D),1)
ListingAgent = Offset($E$2,0,0,Counta($E:$E,1)
SellingAgent = Offset($F$2,0,0,Counta($F:$F,1)

这是我尝试结合这些动态字段,if函数和适当的函数来生成用于显示清单交易的箱形图数据的数据:

COUNT:   =Countif(TransactionType,"Listing")
SUM:     =Sumif(TransactionType,"Listing",SalesPrice)
MEAN:    =Averageif(TransactionType,"Listing",SalesPrice)
STDEV:   =Stdev(If(TransactionType="Listing",SalesPrice))
MIN:     =Min(If(TransactionType="Listing",SalesPrice))
1ST Q:   =Quartile(If(TransactionType="Listing",SalesPrice),1)
MEADIAN: =Median(If(TransactionType="Listing",SalesPrice))
3RD Q:   =Quartile(If(TransactionType="Listing",SalesPrice),3)
MAX:     =Max(If(TransactionType="Listing",SalesPrice))

但是对于除Count,Sum和Mean之外的所有内容,我都会出错,并且excel的输出与我手工生成的答案不匹配。

这是我的StatAnalysis工作表上的输出副本,并带有公式

Statistics Output Statistics Output with formulas

由于我使用的数据是机密的,因此我无法共享使用的源文件。但是,为了帮助您直观地看到我所做的事情,我生成了一个仿制的交易文件,该文件模拟了我正在使用的文件(所有内容都完全相同,只是名称,日期和地址是为了保护身份而进行的更改)。

1 个答案:

答案 0 :(得分:0)

在倒数第二个括号放在错误位置的两个命名范围公式中,您有误:

ListingAgent = Offset($E$2,0,0,Counta($E:$E),1)
SellingAgent = Offset($F$2,0,0,Counta($F:$F),1)

此外,请务必使用条件条件将这些条件If公式作为数组公式使用 Ctrl + Shift + Enter

例如

=STDEV(IF(TransactionType="Listing",SalesPrice))

作为数组公式输入时,应该出现在{}周围。


对于中位数和四分位数,您还可以使用AGGREGATE函数来处理数组,还可以指定其他参数(例如6)来忽略错误值。这不需要使用 Ctrl + Shift + Enter

输入

例如使用四分位数函数参数降低四分位数,并忽略错误值参数:

=AGGREGATE(17,6,SalesPrice/(TransactionType="Listing"),1)

例如中位数:

=AGGREGATE(16,6,SalesPrice/(TransactionType="Listing"),0.5)

感谢@BarryHoudini展示了如何完成最后的操作。