![按日期選擇最後一筆並在 Excel 中輸入](https://rvso.com/image/1540082/%E6%8C%89%E6%97%A5%E6%9C%9F%E9%81%B8%E6%93%87%E6%9C%80%E5%BE%8C%E4%B8%80%E7%AD%86%E4%B8%A6%E5%9C%A8%20Excel%20%E4%B8%AD%E8%BC%B8%E5%85%A5.png)
我有迫切需要分析的數據,但我不知道如何繼續。數據分為三列;第一個是日期。日期不按順序排列(由於各種原因),新資料只是添加到列表的底部。我還在第二列中列出了產品的售價,在第三列中列出了產品類型。例如:
計算必須基於任何一種類型的七個最新價格。第三最低價格和第二最高價格分別進入以儲存格「A」( F12
) 和「B」( G12
) 開頭的表格。
第三個公式應消除(忽略)最近七個價格中的最高和最低價格,併計算其餘五個價格的平均值。這位於表格的最後一列中,從儲存格「C」( H12
) 開始。
然後我需要一個組合條形圖/折線圖,橫軸為“類型”,縱軸為“價格”。我需要一個顯示較低範圍(單元格“A”)和較高範圍(單元格“B”)的堆積條形圖,並且線圖將與平均值(單元格“C”)重疊。
我不是 Excel 嚮導,我已經嘗試了所有可以使用的自助教學來解決這個問題。我已經認為這VLOOKUP
可能有用,但現在我不知所措。
答案1
好的,斯科特提出的在某一天禁止多次銷售同一類型的限制使得這成為可能。但它仍然很複雜。使用VBA可能會簡單很多,也許這裡有人會發布一個流程。
我將首先使用“輔助”表,因為查看中間數據並仔細檢查計算結果是否正確非常有用,但我也會顯示不使用輔助表的公式。下面顯示了輔助表以及結果。
我使用了隨機價格和日期,但遵守了上述關於每個日期給定類型多次銷售的限制。現在讓我們建立 F2 中的公式。
首先,我們需要每種類型的七個最新價格的陣列。一旦可用,就可以輕鬆地從該數組計算結果表中的三個指標。
我們從這個表達式開始:($C$2:$C$55=ROW()-1)
。這是 F2 中公式的一部分,因此ROW()-1
等於 1,並且該表達式給出 True/False 值數組,其中 Type 等於 1 的地方為 True,其他地方為 False。當它被填滿時,ROW()
會遞增,所以在下一行中,它給出的陣列為 True,其中 Type 等於 2,等等。
現在我們將此陣列乘以日期列:($A$2:$A$55)*($C$2:$C$55=ROW()-1)
。這給了一個包含日期的數組,其中 Type 等於 1,其他地方都為 False。
現在我們想要其中最近的 7 個日期,我們可以使用該LARGE()
函數來取得這些日期。由於上述限制(每個日期只有一次類型 1 銷售),這裡給出了最近 7 次類型 1 銷售的日期:
LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-1),{1,2,3,4,5,6,7})
大括號中的一系列數字指示LARGE()
傳回第一個到第七個最大值。
現在我們使用 anIF()
來獲得與這些日期相對應的價格:
IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-1),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-1),$B$2:$B$55)
的邏輯測試的第一部分IF()
會傳回一個數組,其中 A 列中的日期是上面 7 個日期之一,並且該數組再次乘以 type = 1 的數組,因為其他類型在這 7 個日期出售。因此IF()
測試 A 列中的日期是否等於 7 個最近日期的陣列之一和該日期的特定銷售是否針對 Type = 1 IF()
。
現在要在輔助表中從高到低列出價格,我們使用LARGE()
:
(LARGE(IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-1),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-1),$B$2:$B$55),COLUMN()-5)
此公式位於 F 列中,因此COLUMN()-5
等於 1,且該公式傳回該列中陣列的第一個最大值。當它被填充時,COLUMN()
會增加,所以在下一列中,它給出第二大的值,等等。
最後,公式被包裹起來,IFERROR()
因此當給定類型的銷售量少於 7 時,它將返回空白。最終公式:
=IFERROR(LARGE(IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-1),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-1),$B$2:$B$55),COLUMN()-5),"")
在 F2 中輸入。因為它是一個陣列公式,所以必須使用 來輸入CTRLShiftEnter,而不僅僅是Enter。如果輸入正確,Excel 會在公式列中用大括號 {} 將公式括起來。輸入後,選擇 F2 並向下填寫公式,然後橫向填寫以給出上面的幫助表。
現在填寫結果表就很容易了。這兩個公式
=SMALL(F2:L2,3) and =LARGE(F2:L2,2)
計算輔助表第一行中的第三個最小值和第二最大值。還有這個公式
=AVERAGE(IFERROR(LARGE(F2:L2,{2,3,4,5,6}),""))
計算中間 5 個值的平均值。它也是一個陣列公式,因此必須以上述方式輸入。填寫這些公式即可得出結果表。
若要在不使用輔助表的情況下填入結果表,請在 F、G 和 H12 中使用這三個陣列公式並向下填入:
=SMALL(IFERROR(LARGE(IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-11),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-11),$B$2:$B$55),{1,2,3,4,5,6,7}),""),3)
=LARGE(IFERROR(LARGE(IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-11),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-11),$B$2:$B$55),{1,2,3,4,5,6,7}),""),2)
=AVERAGE(IFERROR(LARGE(IFERROR(LARGE(IF($A$2:$A$55=LARGE(($A$2:$A$55)*($C$2:$C$55=ROW()-11),{1,2,3,4,5,6,7})*($C$2:$C$55=ROW()-11),$B$2:$B$55),{1,2,3,4,5,6,7}),""),{2,3,4,5,6}),""))
我希望這對您有所幫助,並且我相信一旦您掌握了這些數據,您就可以產生您想要的圖表。
歡迎任何意見或建議。