(這是方法的宏觀驅動的動態範圍調整大小事情相當不同的,所以我使用一個單獨的答案...)
動態柱狀圖可以通過記住建成「命名範圍」實際上命名爲公式,因此它們的值可能是動態的,在某些情況下非常重要。
讓我們從假定我們在第1行開始的A列中有一組任意值,並且我們還有另一個單元格,它包含我們在直方圖中想要的單元數。在我的工作手冊中,碰巧是E2。因此,我們火了名稱管理器(以下簡稱「公式」選項卡上),並創建
num_bins =Sheet1!$E$2
我已經定義多個容器,而不是塊大小(我們將在後面定義),因爲後者使我們很難確切知道如何設置我們的邊界邊界:我們對第一個和最後一個邊框可能覆蓋值範圍的不同大小部分的想法感到滿意,例如?*
我們也可以設置建立動態公式來描述我們的數據:
data_count =COUNT(Sheet1!$A:$A)
data_vals =OFFSET(Sheet1!$A$1,0,0,data_count,1)
max_val =MAX(data_vals)
min_val =MIN(data_vals)
通過這些定義,我們可以變得花哨。每個垃圾桶應該多大?讓另一個叫公式:
bin_size =(max_val-min_val)/(num_bins)
這裏來的科學:這些公式使動態數組:
bin_array =min_val+ROW(OFFSET(Sheet1!$A$1,0,0,num_bins-1,1))*bin_size
bin_labels =min_val+ROW(OFFSET(Sheet1!$A$1,0,0,num_bins,1))*bin_size
data_vals =FREQUENCY(data_vals,bin_array)
第一個是棘手:它採用的是num_bins minus one
-size範圍的行號生成bin_size
的倍數。它不會在min_val
處啓動陣列,因爲FREQUENCY()
函數會計數達到每個bin值的項目。它比想要的單元數小,因爲該函數產生一個更大的數組,其中最後的條目具有高於的點數最高的單元數。所以我們爲演示目的製作一個單獨的bin_labels
數組。
現在我們可以製作一個圖表。插入(比如說)二維柱形圖並打開「選擇數據」對話框(可以從功能區或右鍵單擊圖表)。添加一個新系列,將系列值設置爲=Sheet1!freq_array
。有必要包含工作表名稱或工作簿名稱以使其發揮作用。如果您喜歡,請添加系列名稱,然後單擊「確定」。現在單擊「編輯」爲「水平(類別)軸標籤」,並將範圍設置爲=Sheet1!bin_labels
。
這裏的2000個細胞=RAND()*5
和5箱(我列出的名字和他們的公式,用值,其中不產生陣列)
和不斷變化的num_bins到10後的同一張紙上。 (該式RAND()
重新計算,所以箱加起來可能完全相同的值)
- (如果你必須有一個用戶定義的窗口尺寸,你需要做
bin_size
紙張基準,並與一個名叫公式計算num_bins
)
現在,這是一個很好的答案。謝謝! :) – l33t 2012-03-07 15:41:51
雖然小修正:第二個'data_vals'應該重命名,以避免名稱衝突。 – l33t 2012-03-07 15:53:50