返回列表 上一主題 發帖

[發問] 如何計算浮動列數範圍的平均值

[發問] 如何計算浮動列數範圍的平均值

本帖最後由 jsleee 於 2013-1-15 21:59 編輯

請教先進
    如果我的工作表如附件所示,
    第一欄為項目,第二欄有數值,我想要在第三欄黃色區域
    埋入公式計算第二欄的數值的平均
    但 每個項目的列數可能每一次都不一樣...
    換句話說,目前AA的列數有4列,
    但下一次AA可能變成6列或其他的列數
    其他項目也是一樣,列數都會浮動
    不知道這樣的函數如何寫?還是只能用VBA?
    我的困擾是 不知用甚麼函數來機動判斷 所需的範圍列數...
    麻煩 先進們指點迷津,謝謝

JS

浮動列數計算.rar (5.92 KB)

j14
=IF(C14="","",PRODUCT(OFFSET(I14,,,IF(ISNA(MATCH("*",C15:C$99,)),COUNT(E14:E$99),MATCH("*",C15:C$99,)))))
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 14# zz5151353

感謝 zz大大的協助,我再好好研究研究

JS

TOP

公式已設動態了,另外增加一 VBA  速度跟效率都全面提升,請參考附上的檔案

浮動列數計算.rar (9.28 KB)

300 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 12# Hsieh

感謝 超級版主 提供的修正
已修正並測試正常,感恩

JS

TOP

回復 11# jsleee
y公式 =OFFSET(測試!$C$14,,,COUNTA(測試!$E$14:$E$65536)+1,)
列位應該要用絕對參照,否則當名稱使用於公式內時
會因為制改變而改變計算的起始位置
學海無涯_不恥下問

TOP

回復 10# Hsieh

謝謝 超級版主 的指點
我試著依照 超級版主 的指示進行 x定義範圍公式的修改,結果還是有問題
接著我發現 只要將 y的定義範圍公式修改,搭配 超級版主 所提供的 x 修改,結果就OK
修改前 y公式 =OFFSET(測試!$C$14,,,COUNTA(測試!$E14:$E$65536)+1,)
修改後 y公式 =OFFSET(測試!$C$14,,,COUNTA(測試!$E14:$E$65536)+ROW(測試!E14),)

因為對公式並沒有完全了解透測,所以也不太知其所以然
附上修改後的測試結果正常檔案,如果有任何補充說明,請不吝提出,謝謝

JS

測試2.zip (30.11 KB)

TOP

回復 9# jsleee
因為資料範圍並非從E1開始
所以ROWS(y)並不會是50
定義名稱x公式改為
=FREQUENCY(ROW(y),IF((y<>"")+(ROW(y)=ROWS(y)+ROW(y)-1),ROW(y),""))
學海無涯_不恥下問

TOP

回復 8# Hsieh

非常謝謝 超級版主 耐心的說明,無奈 愚鈍的我還是一知半解
我嘗試套用這樣的作法在附件的 測試 檔案中
但只有幾列的數據是正確的,之後的數據就出問題...

附件中 的 J欄 是我要的結果,
                  J欄=I欄數值相乘的結果,相乘的依據是根據 C欄的項目
                  K欄 則是驗算
其中 第14列~30列 結果都還正常,但從 31列開始,數據就出現問題...

能否在勞煩 超級版主 協助確認一下我的問題是出在哪裡?
感激不盡

JS

測試.zip (20.38 KB)

TOP

回復 7# jsleee
範例的做法為配合資料量變動
x名稱的公式改為=FREQUENCY(ROW(y),IF((y<>"")+(ROW(y)=ROWS(y)),ROW(y),""))

x名稱的用意在傳回每個分類資料量
以檔案資料來說,會傳回陣列{1,4,2,6,3,5}
所以若以A欄為非空格的相對B欄位置,向下擴展的資料作平均就是各分組的平均

以C1而言,A1項目的資料量是x的第2個值=4
所以OFFSET(B1,,,INDEX(x,COUNTA($A$1:A1)+1))
中範圍的列數是INDEX(x,COUNTA($A$1:A1)+1)
就是計算A欄非空格的數量加1來指定x陣列中的序列數
學海無涯_不恥下問

TOP

        靜思自在 : 為人處世要小心細心,但不要「小心眼」。
返回列表 上一主題