2017-08-03 59 views
0

使用彭博公式:Excel數組公式%的差異日常計算聖偏差

=BDH("AAPL US Equity", "PX_LAST", "01/01/2017", "30/06/2017", "Array=True", "dts=h") 

給出每日價格作爲一個單元的數組:

[116.15,116.02, 116.61, 117.91, 118.99, 119.11, 119.75, 119.25, 119.04,...143.68,144.02] 

我的想法是創建兩套數據在彭博公式中偏移了1天,或者最好通過簡單地從每個陣列的每一端刪除一段數據。

[116.15 [116.02 
116.02 116.61 
116.61 117.91 
117.91 118.99 
118.99 119.11 
119.11 119.75 
119.75 119.25 
119.25] 119.04] 

然後我用公式:

但我得到一個錯誤#DIV/1!

相當肯定我做錯了與陣列的劃分爲SUMPRODUCT給1號,我想該數組的輸出是用來計算st.dev的數組。

我希望創建與每天的返回數組:

[-0.001119242 0.00508533 0.011148272 0.009159528 0.001008488 0.005373184 -0.004175365 -0.001761006 0.008064516 -8.33333E-05 -0.001750146 0.001836701 0.000666667 -0.000916056 0.015920647 0.000492287 8.20075E-05 -0.002624026] 

然後我可以使用STDEV()公式得到的標準偏差。

我想在一個單元格中這樣做,以免浪費電子表格空間。

任何想法?

回答

1

讓我們假設B2包含您的彭博公式返回下面的字符串...

116.15, 116.02, 116.61, 117.91, 118.99, etc... 

首先定義一個名稱,以便它在一個數組的形式返回那些價格...

Name: Prices 

Refers to: =EVALUATE("{"&Sheet1!$B$2&"}") 

然後定義另一個名稱,以便它返回該數組中元素的數目...

Name: PriceCnt 

Refers to: =COUNT(Prices) 

現在你可以使用以下數組公式,這需要與控制+ Shift + Enter確認...

=STDEV((INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,2):INDEX($A:$A,PriceCnt)))))-INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1))))))/INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1)))))) 

希望這有助於!